有没有办法将一元减号(否定)重新绑定到与Num不同的类型类?

时间:2017-01-24 15:38:08

标签: haskell

据我了解,一元减号是Haskell中唯一的一元运算符,它必然会Num negate?有没有办法将一元减号重新绑定到不同类型类中的negate

1 个答案:

答案 0 :(得分:4)

试试the RebindableSyntax extension。它允许一元减号指代任何"否定"在范围内。正如docs say

  
      
  • 否定(例如“ - (f x)”)表示“否定(f x)”,无论是数字模式还是表达式。
  •   

编译器对此约定进行了硬编码,但只要您

就可以说服
  • 启用RebindableSyntax,隐式启用NoImplicitPrelude;
  • 导入Prelude时隐藏默认negate;和
  • 在范围内定义您自己的negate