小编pig*_*nds的帖子

与函数一起使用时 <$> 和 <*> 的说明

我目前正在学习 haskell,我很难理解如何解释<$>and<*>的行为。

对于某些上下文,这一切都来自搜索如何or在使用时使用操作takeWhile,我发现的答案是这样的

takeWhile ((||) <$> isDigit <*> (=='.'))
Run Code Online (Sandbox Code Playgroud)

在我见过的大多数文档中,<*>与容器类型一起使用。

show <*> Maybe 10
Run Code Online (Sandbox Code Playgroud)

通过查看

(<$>) :: Functor f => (a -> b) -> f a -> f b
Run Code Online (Sandbox Code Playgroud)

它告诉我 <*> 保留外部容器(如果其内容)并将权限应用于内部,然后将其包装回容器中

   a       b          f       a        f       b
([Int] -> String) -> [Just]([Int]) -> [Just]([String])
Run Code Online (Sandbox Code Playgroud)

这对我来说是有意义的,在我看来,这f a本质上是在容器内部发生的,但是当我尝试相同的逻辑时,我可以理解,但我无法将逻辑关联起来

f = (+) <$> (read)
Run Code Online (Sandbox Code Playgroud)

所以因为f它变成了

   a           b              f           a          f            b
([Int] -> [Int -> Int]) -> ([String] …
Run Code Online (Sandbox Code Playgroud)

haskell

5
推荐指数
1
解决办法
163
查看次数

标签 统计

haskell ×1