2012-12-20 61 views
7

所以我喜歡Haskell,但對Num類不滿意。 所以我想爲代數類型做我自己的typeclass層次結構。
問題是,即使我導入Prelude隱藏Num以及與它相關的所有東西,仍然使字符1具有類型t的唯一方法是使t實例Num。
我很想讓我自己fromInteger類和離開民出來的圖片完全一樣,這從Haskell中的Integer覆蓋

import Prelude hiding (everything having to do with Num) 
import qualified Prelude (everything having to do with Num) 

class (Eq fi) => FromInteger fi where 
    fromInteger :: Integral -> fi 

foo :: (FromInteger fi) => fi -> String 
foo 1 = "that was a one" 
foo 0 = "that was a zero" 
foo n = "that was neither zero nor one" 

,然後我會適當地實施fromInteger爲全新類型和從來沒有說關於民什麼。

有沒有辦法告訴解析器使用不同的fromInteger方法?

謝謝!

回答

12

您在尋找GHC的RebindableSyntax extension

通過把

{-# LANGUAGE RebindableSyntax #-} 

在源文件頂部的啓用它。

+0

很酷,太棒了! –

+5

@JosephVictor請看[Numeric Prelude](http://www.haskell.org/haskellwiki/Numeric_Prelude)。你可能會發現它做到了你想要的。 – dave4420

+1

這更酷了(基本上,正是我寫的!) –