haskell에 대한 시험 준비 교사는 우리에게 약간의 연습 문제를 제시했지만 문제를 논의한 날에는 아팠습니다.haskell에서 클래스의 인스턴스와 인스턴스를 계산하는 함수
data VodkaEnergy = Vodka Int | Energy Int | Mix VodkaEnergy VodkaEnergy
내가 관리하지 않은하십시오 롱 드링크에 보드카와 에너지의 부분을 계산하는 함수를 작성)
1 : 그들 중 일부는 내가 그들 중 일부는 내가 알아낼 수 없습니다, 해결 훨씬 더 많은 일을보다 :
mixPortion :: VodkaEnergy->(Int,Int)
mixPortion (Vodka x) = (x,0)
mixPortion (Energy y) = (0,y)
mixPortion (Mix x y) = (a,b)
where a = fst (mixPortion x)
b = snd (mixPortion y)
나는이 모든 입력을 잡으려고하지 않는 과도하게 단순화 솔루션을 실현하지만 난 손실에 있어요.
1b) 보드카 에너지는 보드카와 에너지의 비율이 같은 경우 2 개의 긴 음료를 동일하게 만들어야합니다.
내가 기능을 가지고 있지만 나는 그것을 같이 갈 것이라고 믿고있어 때까지 내가 해결할 수없는이 하나
instance Eq VodkaEnergy where
x == y = mixPortion x == mixPortion y
typeclasses 여전히 나를 위해 어려운, 그래서 저를 해결 않습니다.
2) 손실, 내가 지금까지 가진 모든 다시
data Tree = Leaf Int | Ndoe Int Tree Tree
의 잎 + 노드의도 양이있는 경로를 계산하는 함수를 작성하는 것은 모든 노드를 계산하고 잎 기능입니다 도움이되지 않습니다 트리, 많은
3)
data Eq a => Set a = S [a]
만들기 SET1의 모든 요소가 SET2 그 반대에 포함되어있는 경우 두 가지가 같은 식의 인스턴스 설정 그 반대.
작업의 데이터 유형이 "Eq a =>"로 컴파일되지 않기 때문에 혼란 스럽습니다.
instance (Eq a) => Eq (Set a) where
x:set1 == set2 = x `elem` set2 && set1 == set2 && set2 == set1
하지만 "X : SET1"그러나 내가 지금까지 노력하는 것은 이것이다가 다른 종류의
나는이 아마 초보자 질문 알고에게 기대 때문에 부분은 컴파일되지 않습니다. 내 말은, 난 초보자 야. 나는이 같은 haskell에 대한 질문에 대한 좋은 ressources를 찾기가 힘들어서 어딘가에 웹에 떠 다니는 해답을 놓친다면 나를 연결 시켜라. 솔직히 조금 필사적이고, 시험이 가까워지고 있습니다. 아직 기능적 프로그래밍을 제대로받지 못했습니다. 도움 주셔서 대단히 감사합니다.
1a) 좋아 보이지만, 항상'fst' 또는'snd'가 아닌 전체 튜플을 함께 추가해야합니다. 1b) 좋아 보인다. –
2) 가능한 모든 경로 목록을 추출해 보셨습니까? –
3)'x : set1'이 의미하는 바는 모르지만, 이것은 하스켈 구문이 아닙니다. 두 세트/변수'set1'과'set2' (또는 longdrink 예제에서 사용한 것과 같은'x'와'y')가 필요하고 원하는 기준을 검사하는 함수를 사용해야합니다. –