当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何在Haskell中编写符号的限定名称?》经验,为你挑选了2个好方法。

我想在两个不同的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



1> newacct..:

尝试

three = (T.<*>)

将中缀运算符定义为整数是很奇怪的.让我们考虑\\(设置差异运算符):

import qualified Data.List as L

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

如您所见,L.\\是一个合格的中缀运算符; 它仍然作为中缀运算符.要将它用作值,请在整个事物周围加上括号.



2> Don Stewart..:

请记住,我们导入符号包裹的parens.例如

import T ((<*>))

所以导入合格是一样的:

import qualified T as Q

main = print (Q.<*>)

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有