导入时如何隐藏操作符?

时间:2016-10-25 10:16:07

标签: haskell

这是我的代码,试图重新定义*。只有在*之前隐藏时才能实现:

import Prelude hiding (*)

(*) :: Int -> Int -> Int
x * 0 = 0
x * y = x + x*(y-1)

但它不起作用:

$ ghci test.hs
  

GHCi,版本8.0.1:http://www.haskell.org/ghc/ :?寻求帮助

     

test.hs:1:24:错误:解析输入'*'

时出错      

失败,模块加载:无。

     

前奏>

我可以隐藏其他功能:

import Prelude hiding (read)

import Prelude hiding (show)

虽然它不适用于*+-等运营商。

如何隐藏它们?

1 个答案:

答案 0 :(得分:17)

回想一下如何查询ghci函数的类型:

:t read
:t show

关于运营商:

您输入:t +吗?

不,那么你会收到一个解析错误。

你做:t (+)

至于您的情况,您可以使用其他括号隐藏它:((*))

import Prelude hiding ((*))

(*) :: Int -> Int -> Int
x * 0 = 0
x * y = x + x*(y-1)