我有一个包含以下代码的文本文件:
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给了我以下错误:
interactive>:1:1:1错误:变量不在范围内:evenOdd :: Integer - >吨
这让我感到困惑,因为如果我在* Main>中输入完整的代码行,则evenOdd工作正常。我怎样才能让它发挥作用?
答案 0 :(得分:2)
在我的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>