学习 haskell 并想要一个函数来生成类似于 C 中的 2D 网格:
int data[3][3]
什么是可接受且优雅的方法?压缩?折叠?
我可以声明一个像:
x = [[0,0,0],
[0,0,0],
[0,0,0]]
但我想要一个带有 x y 参数的函数。努力理解没有 for/while 循环的最简单方法:(
最佳答案
您似乎在问“我应该使用什么来代替 Haskell 中的数组”,对吗?您询问了使用列表,这当然不是数组,对于任何需要非顺序访问的严肃工作(例如,列表提供 O(n) 元素访问而不是 O(1)),都应该避免使用。
你应该考虑的包:array(旧的,标准的 Haskell 数组),vector(新的,使用流融合,快速,一个实际上合理的 API,装箱或未装箱,但只有一个维度,除非你嵌套它们)和 repa(只工作在较新的 GHC 版本上,但即使在未装箱的表示上也允许多维数组和并行操作)。
初始化其中任何一个的最简单方法(当您说“生成”时,我假设您的意思是“初始化”)是它们各自的“fromList”函数。例如:
import Data.Vector as V
...
V.fromList $ map V.fromList [[01,02,03],[11,12,13],[22,22,23]]
关于haskell - 在 Haskell 中生成二维网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6240749/