嗨伙计可以有人解释我作为一个haskell noob运营商:
(.) :: (b -> c) -> (a -> b) -> a -> c
(<$>) :: Functor f => (a -> b) -> f a -> f b
(<*>) :: Applicative f => f (a -> b) -> f a -> f b
Run Code Online (Sandbox Code Playgroud)
做?当我看到签名时,我什么都不知道,通过一个简单易懂的解释来帮助我.
Mar*_*coS 14
我也在学习Haskell,我的建议是看看你学习哈斯克尔的好事!,更确切地说:
(.)
读取功能组合<$>
和<*>
read Applicative functors在本质上:
(.)
是函数组合:如果你有g :: a -> b
,f :: b -> c
然后f . g
本质上是f(g(x))
:首先使用a获得a 然后使用它来获得ag
a
b
f
b
c
<$>
使用一个函数获取a
并返回一个b
函数,一个包含一个函数的函子,a
它返回一个包含一个函数的函子b
.所以<$>
是一样的fmap :: (a -> b) -> f a -> f b
<*>
需要一个仿函数包含一个函数获取a
和返回b
,并函子中含有一种a
,它返回一个仿函数包含一个b
.所以从仿函数<*>
中提取函数并将其应用于仿函数内的参数,最后将结果返回到仿函数中
请注意,您在书籍章节中找到的解释比我上面的尝试更好
也许你通过例子(像我一样)学习,所以这里有一些你可以在GHCI中搞乱的简单.
(.) - Function Composition
-- (.) :: (b -> c) -> (a -> b) -> a -> c
> f = (+1)
> g = (*2)
> a = f . g
> a 0
1 -- f( g( 0 ) ) or (0 * 2) + 1
> b = g . f
> b 0
2 -- g( f( 0 ) ) or (0 + 1) * 2
<$> - Functor
-- (<$>) :: Functor f => (a -> b) -> f a -> f b
> a = (*2)
> b = Just 4
> a <$> b
Just 8
<*> - Applicative
-- (<*>) :: Applicative f => f (a -> b) -> f a -> f b
> a = Just (*2)
> b = Just 4
> a <*> b
Just 8
Run Code Online (Sandbox Code Playgroud)
我希望有所帮助.
归档时间: |
|
查看次数: |
3885 次 |
最近记录: |