haskell - 包含不同类型的列表

我目前正在编写自己的结构,它可以同时处理整数和字符串:

有点像

data Collection = One Int | Two String | Three(Collection)(Collection)

但是,我试图编写一个可以将我的结构转换为列表的函数。

我是否认为这是不可能的,因为默认情况下:

[1,2,"test"]

在控制台中不起作用,因此我的功能注定总是失败?

最佳答案

你可能应该只定义

type Collection = [Either Int String]

然后,而不是做

l = [1,2,"test"]

你可以做到

l :: Collection
l = [Left 1, Left 2, Right "test"]

如果您需要两种以上的类型,您需要定义自己的成员类型。所以你也会做这样的事情

data MemberType = MyInt Int | MyString String | MyFloat Float deriving Show
type Collection = [MemberType]
l :: Collection
l = [MyInt 1, MyInt 2, MyString "test", MyFloat 2.2]

派生 Show 不是必需的,但是能够简单地执行 print l 以一种很好的方式打印列表是很好的。

https://stackoverflow.com/questions/12485726/

相关文章:

vba - Access 自定义组

php - 如何从一个函数返回多个值

sql-server - 普通的 SQL Server 索引是否包含主键值?

mongodb - 为什么叫NoSQL?

encryption - 解码 AES-256 key 需要多少种组合?

linq-to-sql - 从 Telerik 扩展网格获取分页、过滤并传递给存储过程

unix - 用另一个值替换 unix 文件中的最后一列

sql - 更新引用另一个表

ruby-on-rails - 仅显示 f.label 覆盖 f.input 标签

php - 从php中的日期检索日期,月份,年份