gpt4 book ai didi

haskell - 为什么 pointfree.io 选择 liftM2 而不是 liftA2?

转载 作者:行者123 更新时间:2023-12-05 09:16:52 29 4
gpt4 key购买 nike

我最近正在为 ISBN Verifier 写一个解决方案在 Exercism 锻炼,当我通过 pointfree.io 运行这个函数时:

\c -> isDigit c || c == 'X'

我回来了:

liftM2 (||) isDigit ('X' ==)

为什么 pointfree.io 从 Control.Monad 中选择 liftM2 而不是从 Control.Applicative 中选择 liftA2

最佳答案

事实是 Control.MonadControl.Applicative 要老得多。

Monads 已经在 Haskell 98 中,而关于应用仿函数的论文是在 2007 年引入的。Hackage 中的包自 2005 年以来就存在。

Wikipedia :

Due to historical accident, applicative functors were not implemented as a superclass of Monad, but as a separate type class. It turned out that, in practice, there was very little demand for such a separation, so in 2014, it was proposed to make Applicative retroactively a superclass of Monad.

所以 liftM{N} 仍然有效。

关于haskell - 为什么 pointfree.io 选择 liftM2 而不是 liftA2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49564714/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com