Haskell中的求和 - 功能编程

San*_*lar 1 recursion haskell functional-programming

我在Haskell中编写一个简单的函数时遇到了麻烦...这是为了计算从1到n的数字之和.我不允许使用if语句,因为我的老师希望我们专注于功能编程.任何帮助,将不胜感激.谢谢!

summation :: Integer -> Integer
summation n
  | n > 1 = n + summation(n-1)
  | n == 1 = 1
Run Code Online (Sandbox Code Playgroud)

这是GHCi的输出:

clase4.hs:13:28: error:
    Variable not in scope: (?) :: Integer -> Integer -> Integer
Failed, modules loaded: none.
Run Code Online (Sandbox Code Playgroud)

第13行是:

     | n > 1 = n + summation(n-1)
Run Code Online (Sandbox Code Playgroud)

我已经评论了文件中的其他所有内容,但仍然会出现错误.我看不见 '?' 任何地方.这些是屏幕截图:

文件

GHCi输出

K. *_*uhr 10

在源文件中clase4.hs,您认为表达式中标准ASCII减号的字符n-1不是.相反,你可能已经使用了一些其他的unicode字符,比如"en dash"或者只是看起来像减号的东西(也许是因为你用像Microsoft Word这样奇怪的东西编辑了文件,或者复制并粘贴了一些代码捣乱人物的来源).

Haskell将无效字符打印为"?" 因为,据它所知,你的输出终端不支持显示坏字符所需的编码.(这是在Windows环境中运行Haskell时的常见问题,但如果事情设置奇怪,可能会在其他平台上发生.)

使用正确的文本编辑器打开源文件,突出显示"减号"并在键盘上重新键入.在西班牙语键盘上,这应该是右下移键的左侧键; 在美国键盘上,它位于零键的右侧.

如果失败,请尝试将您自己的程序从Stack Overflow复制并粘贴到一个全新的文本文件中并编译 - 从您的问题中复制和粘贴对我们其他人来说工作正常.