gpt4 book ai didi

function - 这个函数是如何工作的 : const const (negate 1) (negate 2) 3

转载 作者:行者123 更新时间:2023-12-03 13:36:41 26 4
gpt4 key购买 nike

我正在学习 Haskell atm,现在我找到了这个功能

const const (negate 1) (negate 2) 3

这个函数的结果是 -2 .我不明白为什么结果不是 -2。
const :: a -> b -> a
negate :: Num a => a -> a

所以我想我也可以这样设置括号:
const (const (否定 1) (否定 2)) 3
但现在我得到 -1 结果。

我的错在哪里?我不明白,这是如何工作的。

最佳答案

Haskell 解析规则非常简单。如果我们忽略中缀运算符( +&& 等),则只有一个规则:

a b c d e is parsed as (((a b) c) d) e.



永远不会像您假设的那样 a (b c d) e . (很少,这可能会巧合地给出相同的结果,但通常它甚至对类型检查器没有意义。)

所以在你的例子中,你必须把它读为
( ( (const const) (negate 1) ) (negate 2) ) 3

哪里 const const简单地忽略 (negate 1) ,并产生 const反而。轮到采摘 (negate 2)作为其常量值,并继续忽略 3 .

关于function - 这个函数是如何工作的 : const const (negate 1) (negate 2) 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29773352/

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