gpt4 book ai didi

haskell - 这个例子似乎打破了 $ 的类型 sig,它有效

转载 作者:行者123 更新时间:2023-12-04 22:32:23 28 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How does function application with the $ operator curry in Haskell?

(1 个回答)


8年前关闭。




如果 ($) 的类型是 (a -> b) -> a -> b , 那你为什么可以把它 curry 为 ($2) ?
2 不是 (a -> b) 类型.
请参见下面的示例。

map ($2)[(+1),(+2)]

这是合法的,令人敬畏的并且直观地是有道理的。请告诉我它如何与类型系统规则保持一致?

干杯

最佳答案

您观察到的行为是由于部分应用程序对中缀运算符的工作方式。这通常称为“部分申请”,您正在申请 2作为“正确的部分”,这将是第二个论点。所以你有了:

($) :: (a -> b) -> a -> b
^
|
This is the type variable for the argument '2'

您可以通过以下方式确认:
ghci
> :t ($2)
($2) :: Num a => (a -> b) -> b

您可能会在最完整的教程中的某个地方找到隐藏的此信息,或者您可以查看 Haskell report节上节。

关于haskell - 这个例子似乎打破了 $ 的类型 sig,它有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17541455/

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