yon*_*ong 8 haskell applicative newtype
为什么存在WrappedMonad和WrappedArrow类型?是因为Monads不是Applicative吗?鉴于WrappedArrow存在,应该是实例
Arrow a => Applicative (Arrow a b)
Run Code Online (Sandbox Code Playgroud)
简单地构建到Haskell本身就像Applicative现在的超类一样Monad?
非常适合WrappedMonad.我想它正在变得(也许已经是)基本上已经过时了.但是WrappedArrow是比较困难的,因为Arrow类型和Applicative类型有不同的种类,* -> * -> *对* -> *.并且由于GHC实例解析的工作方式,添加实例(我假设额外Arrow是一个错字)
instance Arrow a => Applicative (a b)
Run Code Online (Sandbox Code Playgroud)
意味着没有任何具有两个或更多参数的类型构造函数可以给出一个Applicative没有也给出一个Arrow- 这看起来相当激烈.
添加一个超类的逆向选择Applicative (a b) =>到Arrow a会显得更加美味-除了你不能有超有型forall'ed像b.这样的超类也可以用于其他事情,并且已经被多次提出过,所以我认为它很难很好地实现.