【发布时间】:2014-05-12 20:51:06
【问题描述】:
我想将一个类型的新实例映射到一个列表的内容。 例如:
MyList = [1..10]
data MyType = MyType Int
map (MyType (\x -> x)) MyList
我想得到类似 [MyType, MyType ...] 的东西,其中每个 MyType Int 值都来自列表。 这不起作用,我该如何实现?还是有更好的办法?
谢谢!
edit:我忘了 MyType 更复杂,例如:
data MyType = MyType Int String Bool
那么,我怎样才能将列表中的整数映射到 MyType 的 Int 部分,保持其他值固定,如 MyType ...“test”True(这就是我想到 lambda 的原因)。
【问题讨论】:
-
术语说明:在 Haskell 中,(类型类的)实例是类型,而不是值。因此,与其说“将类型的新实例映射到列表的内容”,不如说“从列表的内容中生成类型的值”,或者(理所当然的 Lee 的回答)“将构造函数映射到一个列表”。
-
@Manuel:你应该阅读 Haskell 的简要介绍。