解析有效代码中的错误

时间:2014-06-23 18:23:57

标签: haskell

你能看到一些错误吗?我不能! GHC指出:

Err == Err = True

但是这条线路可以(也许)。

data Stone = Black | White | None | Err
instance Eq Stone where
    Black == Black = True
    White == White = True
    None == None = True
    Err == Err = True
    _ == _ = False 
instance Show Stone where
    show Black = "B "
    show White = "W "
    show Err = "E "
    show None = "N "

错误消息:main.hs:9:20:输入`='

时解析错误

1 个答案:

答案 0 :(得分:5)

这是经典的标签与空间问题。 用空格替换所有标签:

data Stone = Black | White | None | Err
instance Eq Stone where
    Black == Black = True
    White == White = True
    None == None = True
    Err == Err = True
    _ == _ = False 
instance Show Stone where
    show Black = "B "
    show White = "W "
    show Err = "E "
    show None = "N "

编译好。

编译器和编辑器以不同的方式查看选项卡,因此请专门使用空格来避免此问题。

可以设置好的编辑器以使用空格缩进到与标签相同的数量,自动添加后续行以匹配,并使用退格,就好像它是一个背板。