haskell - 如何在 haskell 中使用合理的缩进初始化矩阵

标签 haskell matrix indentation

我想得到一个用 haskell 填充硬编码值的矩阵。然而,由于 haskell 中的缩进规则,我设法做到这一点的唯一方法是将整个矩阵写在一行上,这很难阅读。

matrix = [                          
   [1,0,0],
   [0,2,0],
   [0,0,3]
] --parse error (possibly incorrect indentation or mismatched brackets)

matrix = [ [1,0,0], [0,1,0], [0,0,1] ] --OK

推荐的方法是什么?

最佳答案

haskell 社区决定我们喜欢进行缩进的方式是:

matrix = [ [1, 0, 0 ]
         , [0, 2, 0 ]
         , [0 ,0 ,3 ]
         ]

matrix = [ [1, 0, 0 ]
         , [0, 2, 0 ]
         , [0 ,0 ,3 ] ]

前导逗号是迄今为止占主导地位的风格:)

你也可以降低矩阵

matrix =
  [ [1, 0, 0 ]
  , [0, 2, 0 ]
  , [0 ,0, 3 ] ]

matrix =
  [ [1, 0, 0 ]
  , [0, 2, 0 ]
  , [0 ,0, 3 ]
  ]

您的示例的问题在于,只有缩进“超过 m”的内容才被视为“仍然是矩阵声明的一部分”。例如:

matrix = blah
  bloh
bluh

bluhm 处于同一水平,因此 haskell 看到 bluh 并说道,“好吧,这是一个新声明!我们已经完成了矩阵!”

诚然,编译器错误可能会更清楚一点:)

关于haskell - 如何在 haskell 中使用合理的缩进初始化矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32234674/

相关文章:

haskell - 如何在 Haskell 中强制不同类型级别的类型?

haskell - 如何在 Haskell 中对这种递归结构进行建模?

haskell - 对于没有 `otherwise` 子句的 Haskell 函数,模式匹配是非详尽的

r - 在 R 中的矩阵中找到最大值

c++ - c++中堆上的二维矩阵分配

haskell - 管理 FP 中的复杂状态

C++ 创建子矩阵

用于编辑文件的 Emacs 模式,其中缩进意味着结构

python - BeautifulSoup .prettify() 的自定义缩进宽度

emacs 中的 Objective-C 缩进