如何在Haskell中正确缩进嵌套大小写表达式,该表达式在命令式编程中充当嵌套循环?
f x y = case x of
1 -> case y of
1 ->
2 ->
...
2 -> case y of
...
编译器在第二个 x 案例开始时给了我一个缩进错误,所以我猜它不明白第一个 x 案例已经结束
不是直接的答案,但可能会有所帮助:
在这种特殊情况下,您还可以编写:
f 1 1 = ...
f 1 2 = ...
f 2 2 = ...
或者,作为大小写表达式:
f x y = case (x, y) of
(1,1) -> ...
(1,2) -> ...
(2,1) -> ...
你的代码似乎没问题。Haskell有一个非常简单的缩进规则,如维基教科书中所述:
作为某些表达式一部分的代码应进一步缩进 比那个表达式的开头。
这对我有用:
f x y = case x of
1 -> case y of
1 -> undefined
2 -> undefined
2 -> case y of
1 -> undefined
您可能需要检查编辑器以查看它是否执行正确的缩进。正如@Tarmil建议的那样,始终使用空格进行缩进。更多细节在这里。
我遇到了同样的问题,这是因为我使用制表符进行缩进。当我用空格缩进代码时,它奏效了!