Haskell 's Applicatives를 배우고 있습니다. 그것은 것을 (나는 아마 틀렸다) 날 것으로 보인다 pure
예를 들어, 기능이 정말 필요하지 않습니다 :
pure (+) <*> [1,2,3] <*> [3,4,5]
로 쓸 수 있습니다
(+) <$> [1,2,3] <*> [3,4,5]
누군가가 pure
함수가 명시 적 매핑보다 제공 하는 이점을 설명 할 수 있습니까 fmap
?
pure
하나는 Applicative 계산에서 "순수한"값을 사용할 수있게한다. 올바르게 관찰하면와 pure f <*> x
동일하지만 f <$> x
에 해당하는 내용은 없습니다 f <*> x <*> pure y <*> z
. (적어도 나는 그렇게 생각하지 않습니다.)
Monoid
되는 - 클래스 pure
에 대응하는 Monoid
아이덴티티 원소들 '. (이 제안 Applicative
하지 않고 pure
있기 때문에, 재미있을 수 Semigroup
인 - Monoid
반드시 신분을하지 않고 -. 아직 사용 사실, 지금은, 내가 PureScript는 "없이 실용적 정확히 같은있다 기억하는 것 그것에 대해 생각 pure
, 클래스"비록 내가 돈 그것이 무엇을 위해 사용되는지 모른다.)
fmap (\f' x' z' -> f' x' y z') f <*> x <*> z
라고 생각합니다. 아이디어는 Applicative
"교환"의 법칙으로 문서에 있습니다.
pure f <*> x
와 정확히 동일합니다fmap f x
.pure
에 포함 된 이유 가 있다고 확신Applicative
하지만 그 이유를 완전히 모르겠습니다.