作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
两个不同的 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/
我是一名优秀的程序员,十分优秀!