【发布时间】:2014-02-07 14:33:12
【问题描述】:
我在 Haskell 中编写了以下函数
coordenadas :: (Floating a) => String -> (a, a, a)
coordenadas linea = (x, y, z)
where (_ : xStr : yStr : zStr : _) = words linea
x = read $ tail xStr :: Float
y = read $ tail yStr :: Float
z = read $ tail zStr :: Float
这个函数是用来接收像"N1 X2 Y1 Z10"这样的字符串并产生像(2, 1, 10)这样的元组,但是当我尝试编译它时,编译器说x = read $ tail xStr :: Float行中有一个parse error on input '='。
有人知道怎么解决吗?
感谢您的回答。
【问题讨论】:
-
代码编译得很好(嗯,不是真的,因为
x的类型为Float,而您的类型签名表明它应该具有Floating a => a类型),但在那一行没有解析错误或任何其他。 -
我打赌这是一个缩进问题,但你能举一个
linea的有效值的例子吗? -
谢谢,实际上是缩进问题。我是 Haskell 的初学者。
-
缩进问题很流行。如果你想忘记它,如果你喜欢 emacs,我建议你使用 emacs + haskell-mode。如果你不这样做,这是一个很好的起点,因为 emacs 非常棒。无论如何,vim 的选项甚至很少。如果你不喜欢它们,sublime text 有一个插件。但还有一种选择:haskell web ide。真的很棒:)
标签: haskell parse-error