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
构造函数的人来说,它都是抽象的。