哈斯克尔:用符号初始化一个列表



在Haskell中,有没有一种方法可以初始化列表并同时声明该列表中的符号?

目前我这样做:

import Data.List
main = do
let lambda = "x03BB"
xi = "x926"
bol = "x1D539"
cohomology_algebra = [ lambda, bol, xi]
putStrLn $ xi
putStrLn $ show cohomology_algebra

然而,我有一长串符号,我担心我忘记把它们都放在列表中(已经发生了(

理想情况下,我会做一些类似的事情:

main = do
let cohomology_algebra = [ lambda = "x03BB", bol = "x1D539", xi= "x926"] -- does not compile
putStrLn $ show cohomology_algebra

有办法绕过这个吗?

不是一个完美的解决方案,但您可以使用

let cohomology_algebra@[lambda, bol, xi] = ["x03BB", "x926", "x1D539"]

如果上面两个列表的长度不同(在需要名称的地方(,这将触发运行时错误。

它不是最佳的,因为这个检查应该在编译时进行。此外,在这种代码样式中,我们不得不过多地将标识符与其值分开,从而可能会错误地交换一些定义。

最新更新