Lionhairdino
banner
lionhairdino.bsky.social
Lionhairdino
@lionhairdino.bsky.social
하스켈을 공부합니다. haskeller
https://lionhairdino.github.io/
yearit.com
여행 기분내며, 이동하는 동안 멍도 때리고, 여기 저기 낙서하는 서비스입니다.

여러 사정으로 하스켈로 개발하진 못했는데, 언젠가 여건이 되면 서버들을 하스켈로 포팅하고 싶습니다.

#이어잇 #yearit #여행 #낙서
YearIt - Travel the world, doodle your story
Explore the world block by block, leave your mark
yearit.com
November 3, 2025 at 3:23 PM
세상을 Discrete 하게, 샘플링한다면, State와 새로운 입력의 구별이 없다.
이전 샘플링 결과에 어떤 작업을 적용해서 다음 샘플링으로 넘어갈 뿐이다.
October 2, 2025 at 1:27 PM
함수를 값에 적용하는 작업을 함수, 값으로만 나누는 게 아니라, 적용도 따로 분리한다.

함수, 값, "적용"

주인공 같은 함수, 값에 가려 조연 같던 "적용"을 주연으로 끌어 올려 다양한 구현과 일반화를 시도하다 보면 Applicatives, 모나드, Arrow 다 튀어 나온다.

#함수형 #하스켈 #Applicatives
February 26, 2025 at 12:58 PM
함수를, [있을지 없을지 모르는] 값에 적용할 때 펑터 를 쓰고,
[있을지 없을지 모르는] 함수를, [있을지 없을지 모르는] 값에 적용할 때 #Applicatives 를 쓴다.

(+1)을 Just 1에 적용
Just (+1)을 Just 1에 적용

연산자를 잘 정의하면, 둘 다

(+1)을 1에 적용
과 비슷한 모양을 만들 수 있다.

실무에선, 이들을 비슷한 모양이 되게 할 수 있음이 중요하다.
February 21, 2025 at 5:28 AM
실무에서 #펑터 란, a에 도달하기위해 작업이 필요한 구조를 말한다.예로 Maybe a는 a에 도달하려면, 꼭 a가 Nothing인지 검사해야만 한다. 이런 구조들 중, 작업을 두 번 하나, 한 번 하나 의미상 같은 것으로 볼 수 있을 때가 있다. Maybe (Maybe a)를 Maybe a로 봐도 쓸만한 구조를 #모나드 라 한다
February 21, 2025 at 3:41 AM
fix f = f (fix f)

람다 함수 반복에 fix를 써먹는데, 어째서 무한 반복과 고정점이 관계가 있을까? f를 적용해도 값이 바뀌지 않는 값을 찾는 것이니, 애초에 f가 무한히 적용되어 있는 값 f(f(f(...)))에 f를 한 번 더 적용한다고 값이 바뀌지 않으니, 고정점 중 하나다.
상상입니다. #하스켈 #fix
February 20, 2025 at 2:32 PM
1 + 2 = 4

위 식이 성립하게 바꾸는 방법은?
왼쪽에 1을 더하거나, 오른쪽에 1을 빼거나.
한가지 방법이 더 있다.

=을 항상 왼쪽에 +1을 하고 같은지 보도록 다시 정의하면 된다.
헛갈리지 않게 다시 정의한 걸 += 로 표시하면,

1 + 2 += 4

는 성립한다.무슨 시덥지 않은 소리인가 싶을텐데,
실제로 #하스켈 에서 자주 일어나는 일이다.
February 20, 2025 at 5:35 AM
#하스켈 함수를 받으면, 그 함수를 수정할 수 있는 방법은 없습니다. 입력값, 결과값을 변형하는 함수를 합성하는 방법만 있습니다. a -> d 란 함수가 있을 때, a -> b -> c -> d 일지, a -> b -> d 일지 알 수 없습니다. 다른 말로 하면, 함수를 받는 입장에선 a ->... -> d 와 a -> d는 같습니다.
February 20, 2025 at 1:26 AM
레고는 부품들의 조합Combination을 바꿔가며 새로운 모양을 만들 수 있다. 그런데, 요즘 레고는 딱 특정 제품만을 위한 부품들을 설계하곤 한다. 이런 특수 부품들은 활용도가 떨어지게 마련이다. 이 것과 비슷하게 특정 제품만을 위한 부품을 만들지 않으려고 노력할 수록 더 함수형스런 코드가 나온다.
#함수형 #하스켈
February 10, 2025 at 1:01 AM
λ람다함수는 단순히 이름없는 함수가 아니다.

f의 결과를 이어지는 g와 h에서 각 각 가져다 쓴다면,
람다 헤드에 있는 매개 변수에 바인딩할 수 있다.
λx -> (λr -> h (g r) r) (f x)
f의 결과를 λr에 바인딩해서 g, h에서 모두 쓸 수 있게 됐다.
#하스켈
February 7, 2025 at 5:16 AM
NixOS.kr 디스코드 서버가 막 생겼습니다.
discord.gg/AMp9VYR44J
#nix #nixos
Join the nixos.kr Discord Server!
Check out the nixos.kr community on Discord - hang out with 10 other members and enjoy free voice and text chat.
discord.gg
February 5, 2025 at 1:19 PM
하스켈 공부를 시작하고, 펑터를 슬슬 쓰기 시작하면서, Applicative 로 넘어갈 무렵에 볼만한 글입니다. 컨텍스트란 말이 편해지면, 펑터 다음 진도에 도움이 많이 됩니다.

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

lionhairdino.github.io/posts/2020-0...

#하스켈 #Haskell #컨텍스트 #Applicative #Traversable #traverse
컨텍스트, Applicative 펑터, Traversable
맥락같은 모호한 설명을 하려는 문서가 아닙니다. 하스켈 펑터에서 컨텍스트는 펑터 타입에 접근할 때 항상 동작하는 코드를 의미합니다.
lionhairdino.github.io
January 13, 2025 at 1:49 PM
예전 펑터 글에 "펑터 값을 프리미티브한 값처럼 쓰고 싶다"라는 목표를 먼저 세우고, `<$>`와 `<*>`등을 살펴보는 내용을 추가했습니다.
lionhairdino.github.io/posts/2023-0...

#하스켈 #펑터 #Haskell #Functor
한 번쯤 나올 법 했는데, 아직 없었던 펑터 이야기
수학에서 말하는 펑터가 하스켈에 어떤 모양, 어떤 이유로 들어왔는지 상상해본 글입니다.
lionhairdino.github.io
January 11, 2025 at 11:58 AM
몇 일 전 올렸던 #프리모나드 글에 이어지는, 아주 아주 간단한 #DSL 예시 올렸습니다.
lionhairdino.github.io/posts/2024-1...
#하스켈 #Free모나드 #모나드 #함수형
Free 모나드 DSL 예시
프리 모나드의 개념과 정의를 익힌 후, 실제 DSL을 만들어 보는 예시입니다.
lionhairdino.github.io
December 23, 2024 at 3:30 AM
" #Free모나드 는 공짜라서 Free 모나드가 아닙니다. "
lionhairdino.github.io/posts/2024-1...
#하스켈 을 공부하고 있고, #모나드 를 알고 있는 분들 중, Free 모나드가 손에 잘 잡히지 않는 분들이 볼만한 상상 글입니다.(쉽게 쓰려고 수학을 뺀 게 아니라, 몰라서 수학적인 건 없습니다.)(SNS를 시작한지 얼마 안되어, 여기 저기 모두 올려 봅니다. 중복 정보를 받으시는 분들은 이해 부탁 드립니다.)
Free 모나드
왜 이름이 프리 모나드이며, 프리 모나드는 어떤 이펙트를 합성하고 있는지 살펴 봤습니다.
lionhairdino.github.io
December 18, 2024 at 8:49 AM
neohaskell의 모토 중 하나가 “Mathematics are good when not seen.”라네요.
(벌써 버전이 0.5랍니다)
November 25, 2024 at 11:17 PM
네오빔에 LSP 설정할 때, 몇 개의 플러그인을 조합해서 쓰게 되는데, 늘 따라 하기로 설치만 해서 각 플러그인들의 역할을 모른채 찜찜하게 써 왔습니다. 이 참에 정리해봤는데요, 별 내용은 없지만, 각 플러그인 문서들을 꼼꼼히 읽기 귀찮은 분들을 위한 문서정도는 될 것 같습니다.
lionhairdino.github.io/posts/2024-1...

#neovim #lsp #languageserverprotocol
Neovim에서 LSP 설정에 쓰이는 플러그인들의 역할
네오빔 LSP 빌트인 클라이언트 설정할 때 쓰이는 플러그인들의 설치 방법이 아닌, 무슨 일을 하는지에 대해서만 정리했습니다.
lionhairdino.github.io
November 25, 2024 at 1:36 PM
순수 함수로 상태 모델링을 어찌하는가를 정리한 글입니다. 혼자 상상이니, 정식 텍스트 같은 내용을 기대하진 마세요.
lionhairdino.github.io/posts/2024-1...
#하스켈 #모나드 #순수함수 #haskell #monad #arrow #pure
순수 함수로 변수 모델링 (작성 중)
입 출력에 명시되지 않은 것에는 접근 불가능한 순수 함수만 있는 하스켈에서, 어떻게 전역 변수 같은 상위 스코프의 정보들을 순수 함수로 모델링하는지 살펴 봤습니다.
lionhairdino.github.io
November 23, 2024 at 3:07 PM