brj*_*brj 0 haskell infix-operator prefix-operator
我是 Haskell 的新手,不知道哪个是惯用的 - 使用前缀形式或中缀形式的运算符。从我目前为止发现,有特殊字符功能名称,如<$>
,<*>
,>>=
等在中缀形式,但功能,其名称由字母最多的前缀形式使用使用。我的猜测是这是从数学中获得的灵感,尽管我不确定。
我查过Blow your mind , Category:Idioms并搜索了 stackoverflow ,但无济于事。
澄清一下,什么时候中缀函数和前缀运算符是惯用的?
您可以以任何方式调用任何函数。
fmap foo bar
foo `fmap` bar
(<$>) foo bar
foo <$> bar
至于调用它们时的惯用语是什么,这是一个有点软的问题,但这里有一些指导原则:
fmap
和<$>
),则使用可以让您使用更少括号的任何一个。(`foo` bar)
比 更常见flip foo bar
。needle `elem` haystack
比 更常见elem needle haystack
。其他常见的包括div
和mod
。但是,我不知道任何相反的情况,其中运算符通常用作前缀。至于你是否应该让你的新函数成为运算符,答案几乎总是不。命名函数通常更容易理解。在这种情况下的例外是,如果它是您在单个表达式中链接很多的东西(如 Servant 的:<|>
和:>
),以及在问题域中常见和众所周知的运算符。
归档时间: |
|
查看次数: |
251 次 |
最近记录: |