首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用WinGHCi时的一些问题

使用WinGHCi时的一些问题
EN

Stack Overflow用户
提问于 2010-09-19 09:57:52
回答 2查看 1.1K关注 0票数 2

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

代码语言:javascript
运行
复制
soma :: Int -> Int
soma 1 = aluno 1
soma n = aluno n + soma (n-1)

我目前正在使用以下工具编写多行代码

代码语言:javascript
运行
复制
:{
...
:}

但在这种情况下,这似乎并没有解决问题。另外,为什么像这样的东西

代码语言:javascript
运行
复制
soma x y = x + y

工作,当我在WinGHCi中工作的时候?只有在使用let关键字的情况下才能执行此操作

代码语言:javascript
运行
复制
let soma x y = x + y -- valid Haskell code

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

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-19 10:08:49

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

要在ghci中定义函数(或变量),您需要像在do-block中一样使用let,即let f x = x+1。要定义具有类型签名或多个大小写的函数,请使用;分隔各行,如下所示:

代码语言:javascript
运行
复制
let soma :: Int -> Int; soma 1 = aluno 1; soma n = aluno n + soma (n-1)

您可以使用:{ }在几行代码中编写此代码,但在每行的末尾仍然需要;

票数 3
EN

Stack Overflow用户

发布于 2010-09-19 10:07:07

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

为什么不直接将代码写到一个名为'soma.hs‘的文件中,然后使用以下命令将其加载到ghci中:

代码语言:javascript
运行
复制
:l soma.hs

这应该也行得通。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3744252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档