当前位置:  开发笔记 > 开发工具 > 正文

Haskell缩进问题

如何解决《Haskell缩进问题》经验,为你挑选了1个好方法。

我使用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 =    
   | ^

可以帮忙吗

谢谢

汤姆



1> Willem Van O..:

问题不在于缩进。它带有类型签名。您|在的签名中使用了竖线字符()Either。您应该删除它。而且你拼错了Doubble。虽然带有double b的 double 很不错,但不幸的是,它不是a的名称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


@chepner我的猜测是它看起来像是`x |的变体。condition1 = value1 | condition2 = value2`,除了在x上具有类型签名,例如,((x :: Int)| 条件= ...`。OP缩进会在错误的位置添加分号,如`(x :: Int)| 条件; x = ...`
推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有