我应该如何缩进嵌套大小写表达式



如何在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建议的那样,始终使用空格进行缩进。更多细节在这里。

我遇到了同样的问题,这是因为我使用制表符进行缩进。当我用空格缩进代码时,它奏效了!

最新更新