2012-12-20 2 views
7

그래서 저는 하스켈을 좋아하지만 Num 클래스에 만족하지 않습니다. 그래서 대수 유형에 대한 내 자신의 typeclass 계층 구조를 만들고 싶습니다.
Prelude가 Num과 그와 관련된 모든 것을 숨기더라도 리터럴 1이 유형 t를 만들 수있는 유일한 방법은 t 인스턴스 Num을 만드는 것입니다.
Haskell에서 fromInteger 무시

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을 구현하는 것이 결코 민에 대해 아무것도 말할 수 있습니다.

구문 분석기가 다른 fromInteger 메서드를 사용하도록 지시하는 방법이 있습니까?

감사합니다.

답변

12

GHC의 RebindableSyntax extension을 찾고 있습니다.

은 소스 파일의 상단에

{-# LANGUAGE RebindableSyntax #-} 

를 넣어 그것을 사용합니다.

+0

쿨! 멋진데! –

+5

@JosephVictor [Numeric Prelude] (http://www.haskell.org/haskellwiki/Numeric_Prelude)도 살펴보십시오. 당신이 원하는대로 할 수 있습니다. – dave4420

+1

그게 더 시원하다 (기본적으로, 정확히 내가 쓰는거야!) –

관련 문제