Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.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
Haskell 抽象数据类型_Haskell_Matrix_Abstract Data Type - Fatal编程技术网

Haskell 抽象数据类型

Haskell 抽象数据类型,haskell,matrix,abstract-data-type,Haskell,Matrix,Abstract Data Type,我试图理解抽象数据类型。在下面的代码中,我应该为抽象数据类型编写一个函数createMatrix接收x行数、y列数和某些元素z的元组,并用该元素填充矩阵 我是Haskell的新手,对所有的基础知识都很熟悉,但是对于如何为抽象数据类型实现这个函数,我感到非常困惑 我将非常感谢任何关于如何做到这一点的建议 非常感谢 newType Matrix a = Mat ((Int, Int), (Int,Int) -> a) createMatrix (x,y) z = 你已经做到了 crea

我试图理解抽象数据类型。在下面的代码中,我应该为抽象数据类型编写一个函数
createMatrix
接收x行数、y列数和某些元素z的元组,并用该元素填充矩阵

我是Haskell的新手,对所有的基础知识都很熟悉,但是对于如何为抽象数据类型实现这个函数,我感到非常困惑

我将非常感谢任何关于如何做到这一点的建议

非常感谢

newType Matrix a = Mat ((Int, Int), (Int,Int) -> a)


createMatrix (x,y) z = 
你已经做到了

createMatrix (x,y) z = {-TODO-}
显而易见的下一步是

createMatrix (x,y) z = Mat ( {-TODO-} , {-TODO-} )
为什么这是显而易见的

  • 函数返回的值类型为
    矩阵a
    ;它只有一个构造函数,
    Mat
    :因此该值必须以该构造函数开头

  • Mat
    构造函数采用单个值,即一对值。我们手头没有一双正确型号的,所以我们得做一双。同样,只有一个构造函数,
    (,)
    ,所以我们使用它

重要的是,我只是通过遵循这些类型(并且假设您没有准备好调用的任何助手函数)来实现这一点。

谢谢您的回复。然而,我仍然不确定在这一点上下一步应该是什么。Mat构造函数不是分成两对吗?你能给我一些直觉告诉我该做什么吗?它只是一个帮助创建矩阵的函数吗?
Mat
构造函数使用一对:
((Int,Int),(Int,Int)->a)
。这对的第一个元素本身就是一对:
(Int,Int)
(它看起来类似于
createMatrix
的一个参数);第二个元素是一个函数:
(Int,Int)->a
。大概你已经被告知
Mat
构造函数中的值是什么意思了吧?我还没有被告知任何关于Mat构造函数的值的事(除了上面原始帖子中提到的)。我只知道我应该为类型矩阵编写一个函数
createMatrix
,该类型矩阵是一种抽象数据类型。@如果值是矩阵的大小,并且是一个取索引并返回相应值的函数,这可能是有意义的。可能对您有用。我没有看到关于
矩阵
数据类型的任何抽象内容。不幸的是,“抽象数据类型”和“代数数据类型”的首字母相同。我确实看到了一些关于矩阵的抽象的东西。对于任何不使用
Mat
构造函数的人来说,它都是抽象的。