gpt4 book ai didi

function - haskell 帮助.和$

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

以下为例

type Row a = [a]
type Table a = [Row a]

mapTable :: (a -> b) -> Table a -> Table b
mapTable = map . map

notTable :: Table Bool -> Table Bool
notTable = map . map $ (not)

为什么如果我从 notTable 中删除 $,它会停止工作吗?

我已经向自己解释过几次,但它从来没有坚持过,而且我需要一段时间才能弄清楚发生了什么。我知道 $ 基本上确保 $ 的每一侧都单独评估,因为 $ 的优先级最低,但如果我将 $ 拉出,为什么会中断?

谢谢

最佳答案

您对优先级的看法是正确的:. 是 infixr 9(9 最高),而 $ 是 infixr 0(0 最低)。请参阅Haskell Report用于运算符(operator)固定表。

但是,函数应用程序的优先级高于任何运算符,甚至高于 . 。因此:

map . map $ (not)

变成:

(map . map) $ (not)

同时

map . map (not)

变成:

map . (map not)

关于function - haskell 帮助.和$,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5527971/

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