【发布时间】:2011-01-24 05:18:08
【问题描述】:
我想在 Haskell 中重新定义几个算术运算符,以使它们更具可扩展性和通用性。
例如
class Mul a b c | a b -> c where
(*) :: a -> b -> c
这似乎与
结合使用import Prelude hiding ((*))
隐藏标准的* 运算符。但是当然所有常用的乘法也必须起作用,所以我必须定义类似
instance (Num t) => Mul t t t where
(*) = ??
如何在此处访问原始 * 运算符(Prelude.(*) 不起作用)以及如何定义实例类型以使 1 * 1 不与 Monomorpism Restriction?
编辑 -
import qualified
是一个很好的提示,谢谢。
但不幸的是,这迫使我将所有标准方法明确纳入范围。我只想有可能重新定义某些绑定,而其余的保持不变。
那么有没有两者兼而有之?类似的东西
import Prelude qualified ((*))
【问题讨论】:
标签: syntax haskell functional-programming notation