(-> a)가 applicative를 구현했단걸 잘 이해한다면
and $ (\x -> (zipWith (<=) x (drop 1 x))) [1,2,6,4]
여기서의 명시적 람다를
and $ (zipWith (<=) <*> drop 1) [1,2,6,4]
요렇게 우아하게 표현할 수 있다
아직은 우아함이 실용성으로 연결되는 수준은 못되지만 계속 공부해본다
(-> a)가 applicative를 구현했단걸 잘 이해한다면
and $ (\x -> (zipWith (<=) x (drop 1 x))) [1,2,6,4]
여기서의 명시적 람다를
and $ (zipWith (<=) <*> drop 1) [1,2,6,4]
요렇게 우아하게 표현할 수 있다
아직은 우아함이 실용성으로 연결되는 수준은 못되지만 계속 공부해본다
(-> a)가 아니라 (->) a 오타
<*>가 S combinator 라서 <*>하고 const (k combinator) 쓰면 항상 lambda abstraction 다 없앨 수 있음