Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 弦的Haskell二维矩阵_String_List_Haskell_Matrix - Fatal编程技术网

String 弦的Haskell二维矩阵

String 弦的Haskell二维矩阵,string,list,haskell,matrix,String,List,Haskell,Matrix,如何定义一个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

如何定义一个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]]
   |                                    ^^^^^^^^^^^^^^^^^^^^

a
s的列表是
[a]
,因此
a
s的列表是
[[a]]
。然而,这样做的一个结果是,行本身并不具有相同的长度

因此,你应该这样写:

empty2o :: [[String]] -> [[String]]
empty2o::[[String]]->[[String]]
您可以将其与Java进行比较,Java中也不存在2d数组的概念。所以你创建了一个数组

请注意,至少在概念上,Haskell中的列表是链表,因此为了查找第k个元素,它需要O(k)个时间


如果你想使用矩阵,有一个包含模块
Data.matrix
的包,允许你使用2d矩阵。

那么
a
s的列表就是
[a]
,因此
a
s的列表就是
[a]
。然而,这样做的一个结果是,行本身并不具有相同的长度

因此,你应该这样写:

empty2o :: [[String]] -> [[String]]
empty2o::[[String]]->[[String]]
您可以将其与Java进行比较,Java中也不存在2d数组的概念。所以你创建了一个数组

请注意,至少在概念上,Haskell中的列表是链表,因此为了查找第k个元素,它需要O(k)个时间


如果您想使用矩阵,则有一个包含模块的包,该模块允许您使用2d矩阵。

2d矩阵是
[[String]]
,而不是
[[String],[String]]
。我很好奇为什么您认为应该这样定义它?除了好的答案之外,用列表实现类似矩阵的数据类型并不是一个好主意。已经有用于此目的的二维矩阵。二维矩阵是
[[String]]
,而不是
[[String],[String]]
。我很好奇为什么您认为应该这样定义它?除了好的答案之外,用列表实现类似矩阵的数据类型并不是一个好主意。为此目的,已经有了一个解决办法。