[英]Difficulty with loading modules and Haskell GHCi
我有一個包含以下代碼的文本文件:
fib 0 = 1
fib 1 = 1
fib n = fib (n-1) + fib (n-2)
evenOdd n = if (mod n 2) == 0 then 1 else 0
sumFib 0 = 0
sumFib 1 = 0
sumFib n = (evenOdd (fib n))*(fib n) + sumFib (n-1)
基本上,我試圖定義三個函數,其中第三個依賴前兩個函數。 但是,當我在GHCi中加載此文件時,雖然fib正常運行,但evenOdd給我以下錯誤:
交互式的>:1:1:1錯誤:變量不在范圍內:evenOdd ::整數-> t
這使我感到困惑,因為如果我在* Main>中鍵入確切的代碼行,evenOdd效果很好。 我該如何工作?
在我的ghci上,一切似乎都正常。 正如您可以使用fib一樣,我確定您已正確加載了文件,但是在實際加載之前,在將evenOdd
添加到文件后似乎沒有保存。
嘗試:
:l filename.hs
evenOdd 10
這在我的設備上有效。 如果由於某種原因仍然無法正常工作,則可以嘗試運行:edit filename.hs
來查看實際正在加載的文件。也許該文件與您期望的版本不同。
我的終端輸出:
➜ Desktop ls
PO.pptx untitled.hs
➜ Desktop ghci
GHCi, version 8.2.1: http://www.haskell.org/ghc/ :? for help
Prelude> :l untitled.hs
[1 of 1] Compiling Main ( untitled.hs, interpreted )
Ok, 1 module loaded.
*Main> fib 20
10946
*Main> evenOdd 2023
0
*Main> evenOdd 2
1
*Main>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.