如何定义Haskell函数,该函数将字符串的2D矩阵作为输入并返回字符串的2D矩阵作为输出?这是我的猜测
empty2o :: [[String], [String]] -> [[String], [String]]
但这给了我这个错误
code.hs:17:12: error:
Illegal type: `[[String], [String]]'
Perhaps you intended to use DataKinds
|
17 | empty2o :: [[String], [String]] -> [[String], [String]]
| ^^^^^^^^^^^^^^^^^^^^
code.hs:17:36: error:
Illegal type: `[[String], [String]]'
Perhaps you intended to use DataKinds
|
17 | empty2o :: [[String], [String]] -> [[String], [String]]
| ^^^^^^^^^^^^^^^^^^^^
答案 0 :(得分:4)
a
的列表是[a]
,因此a
列表的列表是 [[a]]
。然而,其结果是行本身不具有相同的长度。
所以你应该把它写成:
empty2o :: [[String]] -> [[String]]
您可以将它与不存在2d数组概念的Java进行比较。所以你创建了一个数组数组。
请注意 - 至少在概念上 - Haskell中的列表是链表,因此为了查找 k -th元素,它需要 O(k)时间
如果您想使用矩阵,可以使用包含模块Data.Matrix
的包matrix
,以便使用2d矩阵。