Tim*_*Tim 4 haskell functor applicative
类Applicative声明为:
class Functor f => Applicative f where
pure :: a -> f a
(<*>) :: f (a -> b) -> f a -> f b
Run Code Online (Sandbox Code Playgroud)
我们可以表示fmapi, i=0,1,2,...在条款pure和(<*>):
fmap0 :: a -> f a
fmap0 = pure
fmap1 :: (a -> b) -> f a -> f b
fmap1 g x = pure g <*> x
fmap2 :: (a -> b -> c) -> f a -> f b -> f c
fmap2 g x y = pure g <*> x <*> y
fmap3 :: (a -> b -> c -> d) -> f a -> f b -> f c -> f d
fmap3 g x y z = pure g <*> x <*> y <*> z
Run Code Online (Sandbox Code Playgroud)
在应用中,如何<*>用fmap_i, i=0,1,2,...?来表示?
谢谢。
你可以写:
(<*>) = fmap2 ($)
Run Code Online (Sandbox Code Playgroud)
或者,如果您发现它不太模糊:
f <*> a = fmap2 apply f a
where apply g x = g x
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
106 次 |
| 最近记录: |