나는 펑의 작동 방식을 이해하려고 노력 중이 야, 그래서 나는 여기에 대해 읽어 : http://learnyouahaskell.com/making-our-own-types-and-typeclasses#the-functor-typeclass하스켈 - 펑
내가지도를 받아 (목록입니다) 값의 합계를 계산하는 기능을 가지고있다.
reduce :: Map String [Int] -> Map String Int
reduce = fmap sum
난 정말 fmap
가 어떻게 작동하는지 이해하지 못했다는 그래서 나는 그것에 대해 읽고 내 자신의 버전을 만들기 위해 노력했다. Map은 Haskell 라이브러리에서 이미 정의되어 있으므로 실제로 테스트 할 수 없습니다.
이게 맞습니까?
instance Functor (Map k) where
fmap f fromList[] = []
fmap f fromList[(k, v): xs] = (f v) fmap xs
직접 관련 없음,하지만 난 http://adit.io/posts/2013 펑터를 설명하는이 블로그 게시물 매우 명확 발견 : 당신이 정말로 그것을 실험 할 경우, 당신은
newtype
를 선언 할 수 있습니다 -04-17-functors, _applicatives, _and_monads_in_pictures.html – chi멋진데! 고마워, 나는 그것을 조사 할 것이다. –
"Map이 이미 정의 되었기 때문에 테스트 할 수 없습니다"- 코드를 테스트하기 위해'Functor' 인스턴스를 선언 할 필요가 없습니다. 함수를 단독으로 정의하고 기존 함수 (예 :'fmap ')와 충돌하지 않는 이름으로 변경하십시오. –