Haskell 中的预定义中缀运算符列表?
Pre-defined infix operator list in Haskell?
基本上,我需要为函数组合定义中缀运算符,翻转g . f
方式。
(#) :: (a -> b) -> (b -> c) -> a -> c
(#) = flip (.)
infixl 9 #
在这里,我暂时只选择了符号:#
,但我不确定这个选择在与其他定义冲突方面没有问题。
奇怪的是我在 Haskell.
中找不到预定义的中缀运算符列表
我希望组合运算符尽可能简洁,希望是像.
这样的单个字符,如果可能的话,我想做成&
。可以吗?
是否有任何指导或最佳实践教程?请指教
相关问答:
What characters are permitted for Haskell operators?
您没有看到 Haskell built-in 运算符的列表,原因与您没有看到所有 built-in 函数的列表的原因相同。他们无处不在。有些在 Prelude
,有些在 Control.Monad
,等等。运算符在 Haskell 中并不特殊;它们是具有简洁语法的普通函数。而且 Haskell 人一般都很漂亮 operator-happy。花时间在你最喜欢的镜头库里,你会发现很多 amusing-looking operators.
就(#)
而言,最好避免。我不知道有任何 built-in 运算符调用它,但是在解析时 #
可以是 a bit special。具体来说,编译器扩展在普通标识符的末尾启用 #
,GHC 遵循这种做法定义了许多 built-in(原始)类型。例如,Int
是通常的(装箱)整数类型,而 Int#
是原始整数。大多数人不需要直接与它交互,但它是 #
在 Haskell 中的一个用途,添加您的运算符会稍微混淆它。
您的 (#)
接线员称为 (>>>)
in Haskell, and it works on all Category
instances, including functions. Its companion is (<<<)
, the generalization of (.)
to all Category
instances. If three characters is too long for you, I've seen it called (|>)
in some other languages, but Haskell already uses that operator for something else。如果您不使用 Data.Sequence
,则可以使用该运算符。但就个人而言,我会选择 (>>>)
。任何 Haskell 人都会很快认出它。
基本上,我需要为函数组合定义中缀运算符,翻转g . f
方式。
(#) :: (a -> b) -> (b -> c) -> a -> c
(#) = flip (.)
infixl 9 #
在这里,我暂时只选择了符号:#
,但我不确定这个选择在与其他定义冲突方面没有问题。
奇怪的是我在 Haskell.
中找不到预定义的中缀运算符列表我希望组合运算符尽可能简洁,希望是像.
这样的单个字符,如果可能的话,我想做成&
。可以吗?
是否有任何指导或最佳实践教程?请指教
相关问答:
What characters are permitted for Haskell operators?
您没有看到 Haskell built-in 运算符的列表,原因与您没有看到所有 built-in 函数的列表的原因相同。他们无处不在。有些在 Prelude
,有些在 Control.Monad
,等等。运算符在 Haskell 中并不特殊;它们是具有简洁语法的普通函数。而且 Haskell 人一般都很漂亮 operator-happy。花时间在你最喜欢的镜头库里,你会发现很多 amusing-looking operators.
就(#)
而言,最好避免。我不知道有任何 built-in 运算符调用它,但是在解析时 #
可以是 a bit special。具体来说,编译器扩展在普通标识符的末尾启用 #
,GHC 遵循这种做法定义了许多 built-in(原始)类型。例如,Int
是通常的(装箱)整数类型,而 Int#
是原始整数。大多数人不需要直接与它交互,但它是 #
在 Haskell 中的一个用途,添加您的运算符会稍微混淆它。
您的 (#)
接线员称为 (>>>)
in Haskell, and it works on all Category
instances, including functions. Its companion is (<<<)
, the generalization of (.)
to all Category
instances. If three characters is too long for you, I've seen it called (|>)
in some other languages, but Haskell already uses that operator for something else。如果您不使用 Data.Sequence
,则可以使用该运算符。但就个人而言,我会选择 (>>>)
。任何 Haskell 人都会很快认出它。