gpt4 book ai didi

haskell - 'return' 和 'pure' 之间的区别

转载 作者:行者123 更新时间:2023-12-02 20:46:35 24 4
gpt4 key购买 nike

Control.Applicativereturnpure 之间有什么区别?看来我甚至可以在 do block 的末尾使用 pure

那么是否存在某种情况下应该优先选择其中一个(除了每个人都期望在 do block 末尾有一个 return )?

最佳答案

在 GHC 7.8 及之前版本中,Applicative不是 Monad 的父类(super class)。甚至有可能 Monad实例没有 Applicative实例。然而,人们期望 purereturn对于两者实例的类型应该具有相同的行为。

在 GHC 7.10 中,由于 Functor-Applicative-Monad Proposal , Applicative现在是 Monad 的父类(super class)( class Applicative m => Monad m ) 现在规则是 purereturn所有 Monad 必须相同实例。事实上,默认实现return现在是pure ,如the source on hackage中所示.

pure可能优先于 return因为它不会产生 Monad约束,只有 Applicative约束,从而使函数更加通用。 return可能优先于 pure由于历史先例,用 do 表示法,但是 pure可以达到完全相同的效果。

关于haskell - 'return' 和 'pure' 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32788082/

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