2

使用 WinGHCi,如何实现以下代码?

soma :: Int -> Int
soma 1 = aluno 1
soma n = aluno n + soma (n-1)

我目前正在使用编写多行代码

:{
...
:}

但这似乎并不能解决问题,在这种情况下。另外,为什么不作为

soma x y = x + y

工作,当我在 WinGHCi 工作时?let如果我使用关键字,我只能这样做

let soma x y = x + y -- valid Haskell code

尽管在大多数文献中似乎人们不使用它(我假设这是因为他们正在编译代码?)。

谢谢

4

2 回答 2

3

Haskell 编程的通常工作流程是将函数定义放入文件中,然后使用 ghci 加载该文件以测试函数。

要在 ghci 中定义函数(或变量),您需要let像在 -block 中一样使用do,即let f x = x+1. 要使用类型签名或多种情况来定义函数,请将各行分开,;如下所示:

let soma :: Int -> Int; soma 1 = aluno 1; soma n = aluno n + soma (n-1)

你可以用:{ }多行来写这个,但你仍然需要;在每行的末尾。

于 2010-09-19T02:08:49.113 回答
2

GHCi 在 IO monad 中运行(我认为),因此您必须像这样使用 let 关键字才能理解您的意思。

为什么不将代码写入一个名为“soma.hs”的文件,然后将其加载到 ghci 中:

:l soma.hs

这也应该有效。

于 2010-09-19T02:07:07.007 回答