gpt4 book ai didi

haskell - Haskell 的 $-Operator 的定义

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

这个 post和其他来源,如 this坚持 $-operator 的定义是

($) :: (a -> b) -> a -> b
f $ x = f x

($) f x = f x

($) = id

但我不明白为什么这个定义能够替换括号,所以我尝试自己重现它并检查行为,通过定义:

k :: (a -> b) -> a -> b
k f x = f x

但我得到的是:

-- these work:
(+2) `k` 4
(+2) `id` 4
sum `k` [1,2]
sum `id` [1,2]
map (flip(-)3) $ filter even `k` filter (>=0) [-5..10]
map (flip(-)3) $ filter even `id` filter (>=0) [-5..10]

-- these don't:
sum `k` 1:[2]
sum `id` 1:[2]
map (flip(-)3) `id` filter even $ filter (>=0) [-5..10]

k 不应该代替 $ 吗?我做错了什么?

最佳答案

您缺少 fixity declaration :

infixr 0 $

或者在你的例子中:

infixr 0 `k`

固定性声明告诉解析器中缀运算符的优先级/关联性是什么。

关于haskell - Haskell 的 $-Operator 的定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50785898/

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