学习haskell并想要一个函数来生成类似于你在C中的方式的2D网格:
int data[3][3]
Run Code Online (Sandbox Code Playgroud)
什么是可接受和优雅的方法?压缩?与foldl?
我可以声明一个像:
x = [[0,0,0],
[0,0,0],
[0,0,0]]
Run Code Online (Sandbox Code Playgroud)
但我想要一个带xy参数的函数.苦苦挣扎,理解没有for/while循环的最简单方法:(
Tho*_*son 18
你似乎在问"我应该在Haskell中使用什么代替Arrays",对吧?您询问了使用列表,这些列表当然不是数组,应该避免任何需要非顺序访问的严重工作(例如,列表提供O(n)元素访问而不是O(1)).
您应该考虑的包:数组(旧的,标准的Haskell数组),vector(新的,使用流融合,快速,实际上合理的API,盒装或非盒装,但只有一个维度,除非你嵌套它们)和修复(仅适用)在较新的GHC版本上,但允许多维数组和并行操作,甚至在未装箱的表示上).
初始化其中任何一个的最简单方法(我假设你的意思是"初始化",当你说"生成"时)是它们各自的"fromList"函数.例如:
import Data.Vector as V
...
V.fromList $ map V.fromList [[01,02,03],[11,12,13],[22,22,23]]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6014 次 |
| 最近记录: |