我使用Visual Studio Code作为chice的文本编辑器并且以下Haskell代码无法编译。显然是由于缩进或缺少括号错误。由于没有括号,我想知道问题出在哪里
safeSqrt :: Either String Doubble -> Either String | Doubble
safeSqrt sx =
case sx of
Left str -> Left str
Right x -> if x < 0
then Left "Error"
else Right $ sqrt x
GHCi引发以下错误消息:
Main.hs:51:1: error:
parse error (possibly incorrect indentation or mismatched brackets)
|
51 | safeSqrt sx = | ^
可以帮助他人
谢谢
汤姆
问题不在于缩进。它带有类型签名。您在|
的签名中使用了竖线字符(Either
)。您应该删除它。此外,您拼写了。带有双b的双精度很好,但不幸的是,它不是Doubble
Double
:
safeSqrt :: Either String Double -> Either String Double
safeSqrt sx =
case sx of
Left str -> Left str
Right x -> if x < 0
then Left "Error"
else Right $ sqrt x