这是我的代码,试图重新定义*
。只有在*
之前隐藏时才能实现:
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)
虽然它不适用于*
,+
,-
等运营商。
如何隐藏它们?
答案 0 :(得分:17)
回想一下如何查询ghci
函数的类型:
:t read
:t show
关于运营商:
您输入:t +
吗?
不,那么你会收到一个解析错误。
你做:t (+)
。
至于您的情况,您可以使用其他括号隐藏它:((*))
import Prelude hiding ((*))
(*) :: Int -> Int -> Int
x * 0 = 0
x * y = x + x*(y-1)