haskell - 如何在 Haskell 中编写符号的限定名称?

标签 haskell syntax identifier qualified-name

两个不同的 Haskell 模块之间存在名称冲突,它们想要使用相同的中缀运算符 ( <*> )。 Haskell 98 报告指出

modid.varsym

是允许的,但我无法让它工作。全部内容如下:Test.hs :

module Test
where

import qualified Test2 as T

three = T.<*>

Test2.hs :

module Test2
where
(<*>) = 3

但是尝试编译会出现错误消息:

Test.hs:6:12: parse error on input `T.<*>'

我试过T.(<*>)但这也行不通。

如何引用 import qualified 导入的模块中定义的符号名称?

最佳答案

尝试

three = (T.<*>)

将中缀运算符定义为整数很奇怪。让我们考虑 \\ (集合差运算符):

import qualified Data.List as L

foo = [1..5] L.\\ [1..3] -- evaluates to [4,5]
diff = (L.\\)

正如您在上面看到的,L.\\ 是一个合格的中缀运算符;它仍然作为中缀运算符工作。要将其用作值,请将整个内容放在括号中。

关于haskell - 如何在 Haskell 中编写符号的限定名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/741184/

相关文章:

haskell - 在 Windows 7 上使用 cygwin 安装 Cabal-dev

c++ - C++ 何时引入了 'and' 和 'or' 替代标记?

Javascript while 循环返回值

ios - identifierForVendor 是否随应用程序更新而改变?

performance - 在 Matlab 中使用非连续整数作为单元格或结构中的标识符

haskell - Haskell中没有错误消息

Haskell:将函数应用于所有参数组合

haskell - 为什么 Haskell 数字文字需要以数字开头和结尾?

bash:$[<算术表达式>] 与 $((<算术表达式>))

elisp:标识符中的斜线