在Haskell中处理复杂组合的POD(OO中的普通旧数据)的推荐方法是什么?
我是Haskell的新手。
在静态类型的OO语言(例如,Java)中,所有复杂的数据结构都表示为类和实例。对象可以具有许多属性(字段)。另一个对象可以是该字段的值。可以使用其名称访问这些字段,并按类静态键入。最后,这些对象构建了彼此链接的巨大对象图。大多数程序都使用这样的数据图。
如何在Haskell中归档这些功能?
没有找到相关结果
已邀请:
2 个回复
晤默报
艰管垮淮
这表示
是
,其中有
和
(均为
s); a
是
,
,
或
;
是
,其中
(a
),
(an
),
(a
),或者是
,其中
(a
)和
(a
) 。
行使您可以比较这些对象是否相等,读取它们并将它们转换为字符串。 一般来说,Haskell数据类型是联合(也称为和)和元组(也称为产品)的组合.1
s表示选择(联合):
是
或
,
是其中之一四件事等等。一般来说,元组的写法如下:
这说
(除了是一个类型名称)是一个类型为
的数据构造函数。因此,例如,
,或
。 A
必须同时存在
和
。上面使用的记录符号只是这些产品的语法糖;我也可以写
,然后定义
但是,记录符号对于复杂的数据结构来说可能很好。 另请注意,您可以将Haskell类型与其他类型进行参数化;例如,一个三维点可能是
。这意味着
,所以人们可以写
得到一个
,或者
得到一个
。 (或者
得到一个
,如果你看过类型类和重载的数字文字。) 这是表示数据图表所需的内容。但是,请注意:人们从命令式语言转换为功能性语言的一个问题 - 或者实际上,在任何两种不同的范例之间(C到Python,Prolog到Ruby,Erlang到Java,等等) - 继续尝试解决问题旧的方式。您尝试建模的解决方案可能无法以易于编程技术的方式构建,即使问题是这样。例如,在Haskell中,考虑类型非常重要,其方式与Java不同。同时,为这些类型实现行为的方式完全不同:高阶函数捕获了您在Java中看到的一些抽象,但也有一些不容易表达的抽象(
,
和
) )。因此,请保持您的选择开放,并考虑以功能性方式解决您的问题。当然,在这种情况下,也许你可以全力以赴。但是在探索新语言时请记住这一点。玩得开心 :-) 1:递归:例如,你可以用
表示二叉树。