簡體   English   中英

從GHCi中的文件加載函數時出錯

[英]Error loading function from file in GHCi

我對Haskell完全不熟悉。 為了掌握基礎知識,我已經開始研究“了解一個好的Haskell”。 我堅持從文件加載函數的簡單問題。

該文件名為baby.hs並包含該函數

doubleMe x = x + x

沒有別的。 我把它保存在/Users/me

打字:load baby到GHCi中,我收到以下錯誤:

target“baby”不是模塊名稱或源文件。

我正在使用Mac,我使用TextEdit設置創建了我的baby.hs文件,以生成純文本/ UTF-8文件。 我認為我的主目錄是/Users/me雖然我不知道如何從GHCi檢查這個,但是從我在運行GHCi之前從bash檢查時。

知道我做錯了什么嗎?

正如@clintm建議的那樣,首先修復你的doubleMe函數。 你有什么會給出錯誤---但不是你報告的錯誤。

讓ghci找到你的文件的最簡單方法是確保你從保存文件的同一目錄啟動ghci。打開一個終端窗口,然后輸入

cd /Users/me
ls

ls列出當前目錄的內容; 你應該看到你的文件。 如果你這樣做,太好了! 在bash提示符下鍵入ghci ,並且:load baby應該可以正常工作。 如果沒有,您還沒有將文件保存在您認為的位置。 返回TextEdit或使用Spotlight查看您真正放置它的位置。

你錯過了模塊行。 baby.hs的第一行應該是

module Baby where

doubleMe而言,您缺少將x聲明為函數的參數。

doubleMe x = x + x

否則,您的函數不知道x是什么。

嘗試使用完整路徑,例如:

:load /Users/me/baby.hs

您還應該能夠使用相對路徑。 嘗試導航到baby.hs首先出現的目錄:

% cd /Users/me
% ghci
GHCi blah blah blah
Prelude> :load baby.hs

當你開始工作時,試着離開.hs 我不是100%肯定在什么情況下有效。

@Alec:“問題是這個文件真的叫做baby.hs.txt,但我沒有發現,因為Finder隱藏了.txt部分。”

你可以在TextEdit中解決這個問題...

  • 選擇你的baby.hs.txt文件

  • 雙指點擊它彈出上下文菜單

  • 選擇“獲取信息”以打開文件的“信息”對話框

  • 在Name&Extension區域輸入baby.hs

  • 關閉“信息”對話框

  • 另一個對話框詢問你是否真的想要.hs擴展名

  • 確認你這樣做,而且你很開心

嘗試使用GHCi打開文本文件,然后鍵入您的命令,它的工作原理

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM