gpt4 book ai didi

haskell - 部分 - 为什么我需要反引号?

转载 作者:行者123 更新时间:2023-12-03 21:07:23 26 4
gpt4 key购买 nike

我试图理解部分并认为我已经明白了。基本上,这是一种将部分应用程序应用于二元运算符的方法。所以我了解所有(2*) , (+1)等例子就好了。

但是在 O'Reilly Real World Haskell 书中,Sections 'section' :) 它有这个例子:

(`elem` ['a'..'z']) 'f'
>True

我理解括号的必要性 - 即部分语法。但是为什么我需要反引号?

如果我尝试,我会得到:
(elem ['a'..'z']) 'f'

<interactive>:220:19:
Couldn't match expected type `[[Char]]' with actual type `Char'
In the second argument of `elem', namely 'f'
In the expression: (elem ['a' .. 'z']) 'f'
In an equation for `it': it = (elem ['a' .. 'z']) 'f'

最佳答案

在 Haskell 中,反引号将名称转换为中缀运算符:

a `elem` b = elem a b

所以
(`elem` b) a = (\x -> x `elem` b) a
= a `elem` b
= elem a b

尽管
(elem b) a = elem b a

关于haskell - 部分 - 为什么我需要反引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20680779/

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