나는 하스켈에서 DSL을위한 함수를 만드는 프로젝트를 진행 중이다. 우리는 우리 자신의 Types를 만들고 다양한 함수를 작성하는 데 사용합니다.하스켈 - isBread 함수
data Layer = Bread Bread | Meat Meat |
Cheese Cheese | Vegetable Vegetable |
Condiment Condiment
deriving (Eq,Show)
data Bread = White | Wheat | Rye
deriving (Eq,Show)
내가 지금하고있는 것은 레이어를 취하고 그것이 빵인지 아닌지 true 또는 false를 반환하는 isBread 함수를 구현하는 것입니다.
isBread :: Layer -> Bool
isBread b | White = True
| Wheat = True
| Rye = True
| otherwise = False
위 코드를 사용하면 예상되는 'Bool'유형과 'Bread'유형을 일치시킬 수 없다는 오류가 발생합니다.
isBread :: Layer -> Bool
isBread b | Bool a = True while b = White
| Bool a = True while b = Wheat
| Bool a = True while b = Rye
| otherwise Bool a = False
위의 코드를 시도하여 실제 Boolean을 반환하려고 시도했지만 구문 분석 오류가 발생했습니다. 내 구문이 꺼져 있지만 그것이 내가 원하는 것을 해야하는 것처럼 보일지 모르겠다. 어떤 제안?
오류가있는 곳을 보려면이 선언을보십시오 'data Layer = Bread String | Meat String' 그리고'isBread'라고 쓰십시오. –