2013-11-20 2 views
-1

데이터 유형에 따라 작업해야하는 곳에 문제가 있습니다. 그러나 입력이 일반 "수퍼 유형"일 수 있습니다 (정확한지는 확실하지 않은 하스켈 용어) . Haskell에서 타입 테스트가 작동하지 않습니다.

delagator :: Shape -> ShapeMap -> Integer 
delagator inShape inDataMap 
    | Circle inDataMap = do 
     -- do stuff 
     0 -- dummy return value 
    | Square inDataMap = do 
     -- do stuff 
     0 -- dummy return value 
    | otherwise = do 
     -- do stuff 
     0 -- dummy return value 

--- 기타 정보

type ShapeMap = H.Map String ShapeData 

data Shape = Circle CircleName | Square SquareName | Triangle TriangleName deriving (Eq, Ord, Show) 

오류 : Not in scope: data constructor 'OpExpr'

나는이 기능에 쓴하기 전에 데이터 생성자가 성공적으로이 코드에 사용 된 것과이 오류는 혼란이다.

+0

당신이'Shape'와'ShapeMap'의 정의를 추가 할 수 읽을 필요가 있다고 생각? –

답변

2

패턴 일치 함수 인수가 잘못되었습니다. 가드 식에는 Bool 유형이 있어야합니다. 말인지 생각 :

delagator :: Shape -> ShapeMap -> Integer 
delagator (Circle name) inDataMap = 0 
delegator (Square name) inDataMap = 0 
delegator _    inDataMap = 0 

난 당신이 this page

관련 문제