1

我目前正在从 Learn You a Haskell 的在线版本学习 Haskell,我在第 4 章:函数中的语法。在阅读本书时,我将所有示例函数逐字编码到我的文本编辑器 (Notepad++) 中并在 GHCI 上运行。

我最近做的一个功能开始让我烦恼(它在第 4 章的 Guards, Guards! 部分)。

initials :: String -> String -> String
initials firstname lastname = [f] ++ "." ++ [l]
    where   (f:_) = firstname
            (l:_) = lastname

这是我的代码,也是书中展示的代码。每当我自己编写时,GCHI 总是给我解析错误。但是,当我从书中复制/粘贴它时,它可以工作。有趣的是没有区别。我复制/粘贴了我的代码,它们之间几乎没有区别。我这样做了好几次,所以我确定我没有妄想。

为什么会这样?我该如何解决?起初我查了一下,但我看到的只是“where”之后的两个语句必须在同一列中对齐。我正在这样做。它仍然无法正常工作。

4

1 回答 1

3

Could it be that you are using tabs and doing it inconsistently (i.e., use tabs in some lines and spaces in others)?

The Haskell report says:

  • Tab stops are 8 characters apart.
  • A tab character causes the insertion of enough spaces to align the current position with the next tab stop.

It is really recommended to never use tabs and always use spaces!

于 2013-06-05T20:50:11.113 回答