在Haskell中,可以使用Functor自动导出FoldableTraversablederiving。但是,无法导出Applicative。考虑到有一种定义Applicative实例的明显方法(相当于一个压缩的应用程序),没有启用deriving Applicative的任何方法吗?

最佳答案

不,这一点都不明显。比较以下Applicative实例:

  • []
  • ZipList
  • Data.Sequence.Seq ,其 Applicative instance declaration运行几百行。
  • IO
  • (->) r
  • 解析器parsecattoparsecregex-applicative
  • pipes包中的
  • Proxy

  • 这里几乎没有统一性,而且大多数情况都不明显。

    作为David Young comments[]ZipList实例“最终都是列表类型的两个不同的,等效的Applicative实例”。

    09-26 03:13
    查看更多