gpt4 book ai didi

haskell - 有人能解释一下这段代码中出现 Applicative 实例的位置吗?

转载 作者:行者123 更新时间:2023-12-03 13:55:20 29 4
gpt4 key购买 nike

isAlphaNum :: Char -> Bool
isAlphaNum = (||) <$> isAlpha <*> isNum

我可以看到它有效,但我不明白 Applicative 的实例在哪里(或 Functor )来自。

最佳答案

这是Applicative ((->) r) 的实例, 来自普通类型的函数。它通过复制单个参数以供所有函数使用,将具有相同第一个参数类型的函数组合成一个函数。 (<$>)是函数组合,纯是const ,这就是 (<*>)翻译为:

s :: (r -> a -> b) -> (r -> a) -> r -> b
s f g x = f x (g x)

这个函数也许更广为人知的是 the S combinator .
((->) r)仿函数也是 Reader monad,其中共享参数是“环境”值,例如:
newtype Reader r a = Reader (r -> a)

我不会说为了使函数无点而这样做是很常见的,但在某些情况下,一旦你习惯了这个习语,它实际上可以提高清晰度。例如,你给出的例子,我可以很容易地理解为“是一个字符,一个字母或数字”。

关于haskell - 有人能解释一下这段代码中出现 Applicative 实例的位置吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9013310/

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