【发布时间】:2020-02-27 07:20:23
【问题描述】:
假设我创建了一个新的数据类型如下:
data Typex = Typex {
level :: Int,
coordinate :: (Int, Int),
connections :: [(Int,(Int,Int),Double)] -- edited to be a tuple
} deriving Show
我想从使用[[TypeX]] 的上层修改连接。我的自定义类型是否需要嵌套循环、fmap 和仿函数实例,或者您有什么建议?
【问题讨论】:
-
Haskell 没有循环。您的类型不是参数多态的,因此也排除了
Functor实例。那只剩下fmap,或者只是map。 -
是的,连接应该是一个三元组列表。将其编辑为原始问题
-
@MarkSeemann Haskell 通过带有(相互递归)工作函数的手动编码递归(嵌套)循环。您可能指的是专用循环构造,但即便如此,具有 n 连续生成器的列表推导表达 n-levels-deep 嵌套循环。 :)
-
@MarkSeemann 如果没有
Functor实例,为什么fmap是一个选项?虽然我需要实例才能使用它。 -
您可以在列表中使用
fmap(或map)。