在Haskell中,可以使用Functor
自动导出Foldable
,Traversable
和deriving
。但是,无法导出Applicative
。考虑到有一种定义Applicative
实例的明显方法(相当于一个压缩的应用程序),没有启用deriving Applicative
的任何方法吗?
最佳答案
不,这一点都不明显。比较以下Applicative
实例:
[]
ZipList
Data.Sequence.Seq
,其 Applicative
instance declaration运行几百行。 IO
(->) r
parsec
,attoparsec
,regex-applicative
。 pipes
包中的这里几乎没有统一性,而且大多数情况都不明显。
作为David Young comments,
[]
和ZipList
实例“最终都是列表类型的两个不同的,等效的Applicative
实例”。