gpt4 book ai didi

haskell - <**> 是 <*> 的变体,参数颠倒了。 "reversed"是什么意思?

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

In GHC.Base the description of <**> runs:

A variant of <*> with the arguments reversed.


众所周知,在这种情况下“反转”并不意味着“翻转”为:
GHCi> [1, 2, 3] <**> [(^2), (+1)]
[1,2,4,3,9,4]
GHCi> [(^2), (+1)] <*> [1, 2, 3]
[1,4,9,2,3,4]
那么,“反转”是什么意思呢?

旁注:有些应用仿函数具有 (<**>) = flip (<*>) .例如,这是我给读者的证明( (->) e ):
(->) e: f <**> g =
= liftA2 (flip ($)) f g =
= (flip ($) <$> f) <*> g =
= \e -> ((flip ($) . f) e) (g e) =
= \e -> flip ($) (f e) $ (g e) =
= \e -> (g e) $ (f e) =
= \e -> g e (f e) =
= g <*> f. => (<**>) = flip (<*>).

最佳答案

我最近添加了 do -notation to the base documentation这使得比较更容易 <*><**> ,注意它们是如何从左到右运行的,并且它们都返回 f a :

  fs <*> as
=
do f <- fs
a <- as
pure (f a)
  as <**> fs
=
do a <- as
f <- fs
pure (f a)
众所周知, codified ( Control.Applicative.Backwards )应用程序可以向后运行,我必须缩短这个答案。 Li-yao Xia 的回答liftA2 ($) 和liftA2 (&)

关于haskell - <**> 是 <*> 的变体,参数颠倒了。 "reversed"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63190721/

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