簡體   English   中英

加載模塊和Haskell GHCi遇到困難

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

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