mins [] = []
mins (x:xs) = x : foldr (λ x f -> ((:) <*> f) . min x) (const []) xs x
>> mins [9,6,8,7,5,4,2]
=> [9,6,6,6,5,4,2]
내 능지로는 저것보다 pointfree하게는 못하겠어서 pointfree.io 에 넣어보니까 foldr 에 인자로 들어가는 람다식
flip ((.) . ((:) <*>)) . min
이렇게 됨 ㅅㅂ ㅋㅋㅋㅋㅋㅋㅋ
mins (x:xs) = x : foldr (λ x f -> ((:) <*> f) . min x) (const []) xs x
>> mins [9,6,8,7,5,4,2]
=> [9,6,6,6,5,4,2]
내 능지로는 저것보다 pointfree하게는 못하겠어서 pointfree.io 에 넣어보니까 foldr 에 인자로 들어가는 람다식
flip ((.) . ((:) <*>)) . min
이렇게 됨 ㅅㅂ ㅋㅋㅋㅋㅋㅋㅋ
이렇게 짜면 어떤 이점이 있음? 힙해보인다는 거 빼고
맨 아래 pointfree 말하는거면 1도 쓸모없음.
이쁜 ㅇㄷ?
이쁜?
개이쁜뎅 ㅇㅅㅇ
이쁘다 = total하고 lazy하게 작동하며, 각종 고차함수를 활용하여 높은 가독성으로 코드를 압축한다
아 polymorphic하면 더 좋음
????
하스켈러한테 저 마지막 코드 보여주고 30초 내로 의미 파악해보게 하면 1명이라도 파악 가능할까?
일부러 pointfree 연습한 사람이면 가능은 하지 않을까
(:) <*> f 도 원래 못읽었는데 함수를 applicative로 좀 써보니까 할 수는 있겠음.
근데 하스켈 코드 예쁘다는데 잘 모르겠음... 내가 조또 모르는 코린이라 그런가