lionhairdino

@lionhairdino@hackers.pub · 45 following · 51 followers

지금까지 다루어 봤던 언어는 아래와 같습니다. MSX Basic Z80 Assembly Pascal GW-Basic C Macromedia Director Visual Basic PHP Flash Actionscript C++ Javascript

그리고 지금은, 하스켈을 비즈니스에 쓰려고 몇 년간 노력하고 있습니다. 지금 상태는, 하스켈 자체를 연구하는 게 아니라, 하스켈 (혹은 함수형 언어) 이해가 어려운 이유를 연구하는 아마추어 연구가쯤 되어버렸습니다. 하스켈 주제로 블로그를 운영 중이지만, 아직은 하스켈 프로그래머라고 자신 있게 말하진 못하고 있습니다. 가끔 이해에 도움이 될만한 측면이 보이면, 가볍게 아이디어를 여러 SNS에 올려보곤 하는데, 그다지 프로그래머에게 쓸모 있는 내용이 포함되진 않는 것 같습니다.

Blog
lionhairdino.github.io

함수는 파란색, 변수는 빨간색 같은 의미없는 알록 달록 말고, 함수들이 소속된 모듈 별로 색이 다르다든지, 로컬 변수, 글로벌 변수, 매개 변수를 구별한다든지.. 누가 안 만드나...

0

어제 튜링의 사과를 처음 구경했습니다. 귀인들 만나느라 이용은 안하고 구경만. 조금 과장해서 얘기하면, 다른 공유 오피스와는 다르게 PC방에 개발자 모인 것 같은 느낌이었습니다. 다른 오피스들처럼 조용하고, 조금은 생기 없는 풍경이 아니라, 상대적으로 소음도 좀 있고, 활기가 있어 보여 의외였습니다. 장소 오너분들도 개발자로 알고 있는데, 개발자 이해도가 높은 게, 영향이 있는 것 아닐까요?

(삶에 찌든 사람들 모인 PC방 말고, 젊은이들이 즐겁게 노는 모습의 PC방입니다.)

7

요즘 함수 적용Apply에 꽂혀서, 처음 보는 프레임워크 코드들을 Apply 위주로 읽으니 그럴싸합니다. 그래서, Apply 생각 일부를 정리했습니다. 함수형 프로그래밍 언어도 익숙하지 않은 외국어와 비슷한 느낌이라, 코드들을 정확히는 몰라도 일단 통밥으로 읽는 방법을 계속 훈련 중입니다.

Apply - 이펙트가 있는 함수들을 연이어 적용하고 싶어
Apply - Price와 (exRate -> Price)를 다루는 프로그램의 골격을 똑같이 하고 싶어

해커스펍에 바로 올릴까 했는데, 읽어보니 조금 더 정돈하고 올리고 싶다는 생각이 들어, 개인 블로그에 먼저 올립니다.

3

맞다 맞다 하면서, 청개구리 타래에 다 하트 눌렀습니다.(해커스펍에 중복 글 안보이는 타래 기능이 어여 들어 오길... 설마 TS 전혀 모르는 제가 TS 익혀서 기여할 수 있을 때까지 안들어오진 않겠지요) 여기 몇 분은 아실 것 같은데, 전 빅 황소 청개구리입니다. 튼튼한 손 발로 돌파해야 하는데, 얘들이 힘이 약해지고 있어요.

4

하스켈 db 라이브러리 Opaleye를 쓰려고, Arrow를 봤었는데. 지금은 Arrow를 안 쓰고 Applicative 스타일로 넘어간 것 같습니다. 일정 수준에 다다른 라이브러리 제작자들도 느낀 거지요. 추상화가 고급스럽고 좋긴 하지만, Arrow는 너무 갔다고. (<- 몇 년 전 이야기로, 어디까지나 혼자 추측입니다.) Arrow가 뭔지 알고는 있는 것 같은데, 아직도 쓰려면 (읽는 것 말고) 입술이 마릅니다. Opaleye 예시가 Arrow를 안 쓰니 훨씬 마음이 편하게 접근하네요.

같은 류에서 킬러 기능이 탑재됐다면, 좀 어려워도 꾸역 꾸역 가져다 쓰지만, 그렇지 않은 경우는 고급스러운 모양보다는, 쓰기 편한 게 장땡입니다.

3

문법 강조가 바뀔 때가 한참 지난 것 같은데, AI가 별의별 걸 다하는 세상에 아직도 눈에 보이는 소식들이 없네요. 예를 들면, 식별자(변수), 함수, 등 문법 요소에 따라 색을 입힌다거나 하는 게 아닌,
전역이냐, 로컬이냐로 색을 달리 한다든지,
오른쪽 우선 결합 연산자면 빨간색, 왼쪽 우선 결합이면 파란색 한다든지,
시맨틱 문법 강조가 일반화 될 때가 된 것 같은데, 혹시 저만 모르고 있는 건가요?

2

보통 신분증같이 어떤 대상이 무엇이다를 확인해 줄 수 있는 것들을 Identity라 합니다. 왜 항등이 Identity일까 쓸데 없이 궁금함이 있었는데요. 다음과 같이 상상하면 얼추 그럴 수 있겠다 싶습니다.

더하기 연산자를 <+0> <+1> <+2> 로 정의해서
1 <+0> 2 = 3
1 <+1> 2 = 4
1 <+2> 2 = 5
라고 할 때, 지금 내가 쓰고 있는 더하기 연산자가 어떤 연산을 하는지 알려면 0과 연산을 해보면 알 수 있다. 1 <+2> 0 = 3
결과를 보고, <__> 안의 성질, 즉 연산의 고유 성질을 알아낼 수 있다.

1 <__> 0 = 1 이 나와야 항등원이니, 위의 말이 말그대로 항등원이란 건 아니고,

항등원Identity Element으로 연산의 고유 성질이 뭔지 볼 수 있는 도구가 될 수 있다는 걸 보이는 설명입니다.

이래서 항등원을 Identity Element라고 하는 것 아닌가... 하는 상상입니다.

2

디코는 울타리 안 사람들과 떠드는 느낌이고, 엑스나 쓰레드, 마스토돈은 광장에서 지나가는 사람들 속에서 떠드는 느낌인데, 해커스펍은 묘하다. 페디버스로 광장 사람들도 만날 수 있긴 하지만, 동시에 울타리 안에 있는 느낌도 준다.
'Pub

9

윤슬, 볕뉘
들어 보셨나요?
윤슬은, 찰랑이는 물(바다)에 햇빛이나 달빛이 비치면서 부서지는 모습을 말하며,
볕뉘는, 나뭇가지 사이로 (작은 틈으로) 들어오는 햇빛이라 합니다.

윤슬은 노래 가사로 들어 알고 있었는데, 볕뉘는 처음 들어 봤습니다.
잘 안쓰이는 이쁜 말들이 사라지는 걸 아쉬워하는 사람들이 있어, 살다 보면 한 번쯤은 어디선가 들어 보는데, 볕뉘는 전혀 들어 보지 못했습니다.

4
1
1

현재까지는 마치 원칙처럼 머리를 지배하고 있는 생각이 있는데요.

함수형 프로그래밍을 차지하는 큰 줄기중 하나로,

조금 다르게 생긴 AB에 모두 대응하는 코드를 만들기 위해
**"인수 분해"**를 잘 해서,
A{ a, b, c, d }B{ a, b, c', d } 로 보고, 이 중에서 다른 c, c'을 골라 내고
또, 이 걸 잘 인수 분해해서
c{ e }c'{ f }를 찾아 내고, 둘이 결국 닮은 구석이 없으면, 우겨서
c{ e, _ }c'{ _, f }로 자리를 만들고,
_에 적절한 id를 집어 넣어 결국, AB같은 류로 만든다

란 생각에서 맴돌고 있습니다.

누가 누가 그럴싸하게 잘 우기나, 포멀하게 우기나!

1

a = f a 일 때, af의 고정점이라 하니
m a = m (m a) 가 된다면, m am의 고정점이라 할 수 있다.
모나드는 m a = m (m a)가 안되는 것을 join, return의 도움을 받아 성립하게 만든다.
그래서 m의 고정점을 바로 m a라 할 순 없지만, join, return의 도움으로 고정점처럼 동작하게 할 수 있다.
처럼 설명해도 되나 싶습니다.

여러 번 작업 한 걸, 한 번의 작업으로 표현한다.
반대에서 출발해서 보면, 한 번의 작업을 여러 번의 작업으로 인수 분해한다.

이런 목적 측면에서 보면, 고정점도 모나드도 하나의 궤로 설명할 수 있지 않을까 싶습니다.

그냥 상상입니다.

1

주의: 프로그래머에게도 수학도에게도 쓸모 있지 않은 그저 생각 놀이로, 어제 모임에서 제가 떠들었던 잡담입니다.

튜링 완전한 프로그램은 따로 메모리를 두어 관리하며 돌아가는데, 람다 산법은 이런 메모리가 없는데도 불구하고, 튜링 완전이 할 수 있는 일은 모두 할 수 있다고 합니다. 왜 그럴 수 있는지, 시작 아이디어가 뭘까 생각해 봤습니다. (슬쩍 보기엔, 학문적으로 긴 여정이 있는데, 그 걸 모두 따라가기엔 벅찬 일이라, 절대 따라가고 싶진 않고, 그저 아이디어 정도만 알고 싶습니다.)

함수형에선, 정보를 "기억memory"하는 역할도 역시 함수가 담당합니다. 기억이 필요할 땐 함수 구조를 주어, 기억 공간을 만든다고 볼 수 있습니다. 함수 합성에서 다음 함수의 인자로 새로 바인딩하며 기억의 역할을 합니다. 애초 메모리 모델이 없는 게 아니라, 다른 구조로 메모리 모델을 구현했다고 볼 수 있는 것 아닌가 싶습니다. (이렇게 말하는 곳은 없습니다.)

람다 함수는, "따로 호출할 일이 없어 이름 없는 함수로 정의한다" 쯤으로 넘어가기엔, 숨어 있는 의미가 너무 큽니다. 분명, 이렇게 넘어갈 일이 아닌데, 역시나 친절히 설명해주는 자료를 아직은 못봤습니다. (많이 찾아 보 거나, 깊게 공부한 건 아니라서, 어딘가에는 있지 않을까 싶어요)

람다 함수로 만들어,

  • 실행 시점 제어
  • 함수 합성 체인 참여
  • 필요한 정보들을 모아 두는 단위
  • 외부와 소통하는 길을 만들어 둘 수 있고, ...

여기에 기억이라는 중요한 역할도 담당하게 합니다.

람다 산법은 매개 변수, 함수 몸체, 적용, 이렇게 3가지 요소만으로 모든 걸 해결합니다. 알론조 처치 아저씨는 어찌 이런 구조를 떠올렸을까 싶습니다. 애초에 위와 같은 식으로 볼 수 있는 함수 통찰의 눈이 먼저 있었던 상태에서 만든 거겠지요?

4

하스켈 모임할 때도 해도사가 적극 후원해 주셨었는데, 닉스 모임할 때도 또 적극 후원해 주시고, 후원 감사합니다. 너무 한 회사만 달리고 있어, 다른 스폰서를 적극적으로 찾아봐야 하지 않을까요. 하스켈, 닉스 사용 중인, 혹은 도입을 염두하고 있는 회사 또 없나요?

3

0차 닉스 모임을 다녀왔습니다. 공식 중대형 컨퍼런스도 좋지만, 커뮤니티의 소수 인원이 모이는 자리만의 재미가 있네요. 간만에 목쉬게 수다 떨다 왔습니다. 회사 소속 모든 인원이 닉스를 쓰는 회사가 있다니...

3
0
0
2

혹시 이 후 글 타래(쓰레드) 표현에 대한 계획이 예정되어 있는지 모르겠네요. 지금, 상위 글이 흐릿하게 나오긴 하지만, 시선 분산이 되는 건 막지 못하는 것 같습니다. 상위 글의 폰트 크기까지 줄이든가, 디폴트로 폴딩 되어 있다거나 하면 어떨까요?

글 타래
1

페인트, 도배 공구 중에 스크레이퍼고 있는데요. 기존 페인트나 종이를 긁어서 떼어내는 도구입니다. "모으다/버리다" 뉘앙스보다는, "어딘가에 붙은 신문(사극에서 흔히 보이는 방榜)을 긁어서 떼어 내다" 뉘앙스가 들어 있어서 그렇게 쓰인게 아닌가 싶어요.

0

Intel 쓰고 있는 데스크탑 시스템의 메인보드가 고장이 나서, CPU, 메인보드만 AMD로 갈아 탔습니다. 그러고, 원래 쓰던 nixos 설치된 nvme로 부팅을 하니, 아무런 군소리 없이 부팅이 됩니다?! os 재설치 안해도 되어 한 숨 돌렸지만, 한 편으론 왜? 군소리가 없는지 아주 살짝 불안하네요. 각 종 칩셋들 드라이버 다 제대로 잡힌 건지...

1
1
0
2
3
1
1

Compile 이 대충 com (with의 뜻) pile 쌓다 느낌 아닐까 했는데요. 어원 찾아 보니, compile과 compress가 비슷한 뜻이군요. compile은 이 것 저 것 모아서 패키징하는 느낌이고, compress는 여기에 눌러 담다란 느낌이 추가되는 것쯤으로 보입니다.

1

꼿꼿한 자세에 모니터(32인치, 모니터암 사용중)를 눈높이까지 올려 보는게 대부분 추천 자세로 알고 있는데요. 이렇게 맞춰 놓으면, 항상 몸이 의자에서 흘러내려, 높은 모니터를 보려면 눈을 치켜 뜨면서 보게 되는 안 좋은 습관이 생겨 버렸습니다. 남들한테 다 좋아도, 저한테는 안좋은 건가 봅니다. 그래서, 권장되는 모니터 셋팅을 과감히 무시하고, 가장 낮춰서 썼습니다. 그랬더니, 이 번엔 아래 쪽을 볼 때 불편함이 생겼습니다. 까다롭지요.
그런데, 우연히 노트북 모니터마냥 비스듬히 눕혀 놓고 2~3주째 사용 중인데, 이 거 편합니다. 32인치에 기계식 키보드 달린 노트북 느낌 납니다.

2
0

올 해 2025년은 음력 6월이 두 번 있습니다. 지금까지 "윤"은 4년에 한 번씩 있겠거니 했는데, 19년에 7번 윤달(閏月)이 들어간다네요. 똑 떨어지지 않는 수로 주기가 도는 느낌입니다.

2
2
0
0

엑스와 쓰레드에서 모나드글을 가끔 올려서, 함수형 프로그래머분들을 "낚는데요". (이 거 좀 더 좋은 표현이 없을까요? ㅎ) 방금 전, SICP 역자 분으로 보이는 분(추정)이 팔로우를 해주셨네요! 해커스펍으로 모셔 오려고 하는데, 쓰레드는 DM이 없나봐요.

1

원숭이가 키보드를 쳐도 수 억번 치면 확률상 실제 동작하는 프로그램이 나오는데, LLM이 로컬에서 브루트포스를 할 수 있는 때가 오면, 테스트 통과 조건만 깔짝대면 완성된 프로그램이 나오는 때가 얼마 안남았네요.

0
0

하스켈 위클리를 받아보는데, 끊임없이 블로그 글들이 새로 올라 옵니다. 제가 전공자가 아니라서 그런가, 확실히 포멀한 책과는 다른 방식으로 얻는 게 있습니다. 이런 글들이 누적되는 게 건강한 생태계로 가는 유일한 길 아닐까 싶어요.

1
0
0
0
main = do
  n <- getLine
  putStrLn $ "hello " <> n

설명해야 될 게 한가득인데, 나중에, 나중에 하며 넘어가야 한다. 꼭 Lazy 평가처럼 말이다. 전통적인 "hello world"에서 출발하지 않아도 되는 것 아닐까? 첫 언어가 아닌 분들한테는, Writer 혹은 State 만들기부터 시작하면 어떨까? 단, "모나드"라고 말하지 않고.

2
0
1
0
0
2