#%ED%95%98%EC%8A%A4%EC%BC%88

Lionhairdinolionhairdino
2025-02-26

함수를 값에 적용하는 작업을 함수, 값으로만 나누는 게 아니라, 적용도 따로 분리한다.함수, 값, "적용"주인공 같은 함수, 값에 가려 조연 같던 "적용"을 주연으로 끌어 올려 다양한 구현과 일반화를 시도하다 보면 Applicatives, 모나드, Arrow 다 튀어 나온다.

Lionhairdinolionhairdino
2025-02-21

실무에서 란, a에 도달하기위해 작업이 필요한 구조를 말한다.예로 Maybe a는 a에 도달하려면, 꼭 a가 Nothing인지 검사해야만 한다. 이런 구조들 중, 작업을 두 번 하나, 한 번 하나 의미상 같은 것으로 볼 수 있을 때가 있다. Maybe (Maybe a)를 Maybe a로 봐도 쓸만한 구조를 라 한다

Lionhairdinolionhairdino
2025-02-20

fix f = f (fix f)

람다 함수 반복에 fix를 써먹는데, 어째서 무한 반복과 고정점이 관계가 있을까? f를 적용해도 값이 바뀌지 않는 값을 찾는 것이니, 애초에 f가 무한히 적용되어 있는 값 f(f(f(...)))에 f를 한 번 더 적용한다고 값이 바뀌지 않으니, 고정점 중 하나다.
상상입니다.

Lionhairdinolionhairdino
2025-02-20

1 + 2 = 4

위 식이 성립하게 바꾸는 방법은?
왼쪽에 1을 더하거나, 오른쪽에 1을 빼거나.한가지 방법이 더 있다.
=을 항상 왼쪽에 +1을 하고 같은지 보도록 다시 정의하면 된다.
헛갈리지 않게 다시 정의한 걸 += 로 표시하면,

1 + 2 += 4

는 성립한다.무슨 시덥지 않은 소리인가 싶을텐데, 실제로 에서 자주 일어나는 일이다.

Lionhairdinolionhairdino
2025-02-20

함수를 받으면, 그 함수를 수정할 수 있는 방법은 없습니다. 입력값, 결과값을 변형하는 함수를 합성하는 방법만 있습니다. a -> d 란 함수가 있을 때, a -> b -> c -> d 일지, a -> b -> d 일지 알 수 없습니다. 다른 말로 하면, 함수를 받는 입장에선 a ->... -> d 와 a -> d는 같습니다.

Lionhairdinolionhairdino
2025-02-10

레고는 부품들의 조합Combination을 바꿔가며 새로운 모양을 만들 수 있다. 그런데, 요즘 레고는 딱 특정 제품만을 위한 부품들을 설계하곤 한다. 이런 특수 부품들은 활용도가 떨어지게 마련이다. 이 것과 비슷하게 특정 제품만을 위한 부품을 만들지 않으려고 노력할 수록 더 함수형스런 코드가 나온다.

Lionhairdinolionhairdino
2025-02-07

λ람다함수는 단순히 이름없는 함수가 아니다.

f의 결과를 이어지는 g와 h에서 각 각 가져다 쓴다면,
람다 헤드에 있는 매개 변수에 바인딩할 수 있다.
λx -> (λr -> h (g r) r) (f x)
f의 결과를 λr에 바인딩해서 g, h에서 모두 쓸 수 있게 됐다.

Lionhairdinolionhairdino
2025-01-13

하스켈 공부를 시작하고, 펑터를 슬슬 쓰기 시작하면서, Applicative 로 넘어갈 무렵에 볼만한 글입니다. 컨텍스트란 말이 편해지면, 펑터 다음 진도에 도움이 많이 됩니다.

최근 펑터를 공부하면서, 펑터가 달리 보여 5년전 글의 컨텍스트, Applicative, Traversable 내용을 보강해 봤습니다.

lionhairdino.github.io/posts/2

Lionhairdinolionhairdino
2025-01-11

예전 펑터 글에 "펑터 값을 프리미티브한 값처럼 쓰고 싶다"라는 목표를 먼저 세우고, `<$>`와 `<*>`등을 살펴보는 내용을 추가했습니다.
lionhairdino.github.io/posts/2

Lionhairdinolionhairdino
2025-01-05

a는 Identity a라고 본다면, 세상의 모든 값을 펑터 값으로 생각할 수 있습니다. 항상 함수를 적용할 때는 f <$> a라 쓸 수 있습니다. 간단한 프리미티브 값이든, 복잡한 계산 후 받는 값이든 모두 같은 것으로 취급할 수 있습니다.

FRP에서 Event, Behavior를 일반 값처럼 쓰기 위해, 특별한 테크닉이 필요하지 않습니다. 원래 펑터가 그런 것입니다.

Lionhairdinolionhairdino
2024-12-24

몇 일 전 올렸던 프리모나드 글에 이어지는, 아주 아주 간단한 DSL 예시 올렸습니다.
lionhairdino.github.io/posts/2

Lionhairdinolionhairdino
2024-12-18

" Free모나드 는 공짜라서 Free 모나드가 아닙니다. "
lionhairdino.github.io/posts/2
하스켈 을 공부하고 있고, 모나드 를 알고 있는 분들 중, Free 모나드가 손에 잘 잡히지 않는 분들이 볼만한 상상 글입니다.(쉽게 쓰려고 수학을 뺀 게 아니라, 몰라서 수학적인 건 없습니다.)(SNS를 시작한지 얼마 안되어, 여기 저기 모두 올려 봅니다. 중복 정보를 받으시는 분들은 이해 부탁 드립니다.)

Lionhairdinolionhairdino
2024-11-23

순수 함수로 상태 모델링을 어찌하는가를 정리한 글입니다. 혼자 상상이니, 정식 텍스트 같은 내용을 기대하진 마세요.
lionhairdino.github.io/posts/2

Client Info

Server: https://mastodon.social
Version: 2025.04
Repository: https://github.com/cyevgeniy/lmst