解析有效代码中的错误

dev*_*223 0 haskell

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

Err == Err = True
Run Code Online (Sandbox Code Playgroud)

但这条线路还可以(也许).

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 "
Run Code Online (Sandbox Code Playgroud)

错误信息:main.hs:9:20:输入`='解析错误

And*_*ewC 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 "
Run Code Online (Sandbox Code Playgroud)

编译好.

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

可以设置好的编辑器以使用空格缩进到与选项卡相同的数量,自动跟随后续行匹配,并使用退格键,就像它是一个backtab一样.

  • 在每个源文件的顶部使用`{ - #OPTIONS_GHC -fwarn-tabs# - }`. (4认同)