[英]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.