Profile img

lionhairdino

@lionhairdino@hackers.pub · 75 following · 81 followers

여행 기분내며, 여기 저기 낙서하는 https://yearit.com 을 운영 중입니다.

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

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

Blog
lionhairdino.github.io
YearIt
yearit.com
0
1

지구상에 인터넷이 생긴 이래 A회사만 썼는데, 3년 전에 이사한 건물에 A회사 회선이 안들어와 어쩔 수 없이 해지하고 B회사로 갈아 탔다. 3년 약정이 지나 TV만 해지하겠다고 하니, 인터넷은 해지 안하니, 갑자기 돈을 주겠다고 한다. 인터넷 해지는 원래 할 생각이 없었는데, 약정 걸면 이용료 할인 해주면 되지, 왜 돈을 주냐고 물어 봤다가 상담이 쓸데 없이 길어졌다.

1

인터넷 비용의 구체적인 구조를 처음 알게 됐다. 굳이 알고싶지 않았는데.

예를들어 월 비용을 6만원 책정해놓고, 3년 약정 할인으로 3.5만원 할인해서 월 2.5만원을 내는 걸로 "설정"한다. 그리고, 신규 가입 사은품으로 50만원을 준다. 3년동안 90만원을 통신비로 내게되니 -50만원 하면, 결국 3년에 40만원, 한달에 대충 만원 낸다.

그러다 3년을 채우지 못하고 해지하면, 사은품 50만원이 약간 감가 되긴 하지만, 할인 금액 3.5만원 누적이 붙어, 여차하면 초기 가입 때 받은 돈보다 더 뱉어내는 구조를 만들어 뒀다.

결국 한달에 만원짜리 상품을 복잡한 말장난으로, 초기 가입시 50만원이란 큰 돈으로 사람을 혹하게 만들고, 여차하면 법적으로 정당하게 뒷통수를 세게 후릴 장치를 해두는 마케팅이다. 이래도, 저래도 회사는 득이다. (추심의 리스크를 안고 있으니 이렇게 해도 된다고 보기엔, 추심은 신용도를 볼모로 다 같이 어깨동무 하고 하는거라..)

가장 돈 잘버는 회사들인, SK, KT, LG가 다 그러고 있다. 누군가는 기가막힌 마케팅 설계라고 볼지도 모르겠다. 기간 산업으로 돈을 벌며, 이런 "장난"을 멋진 설계라 보기엔...

문제는 이렇게 복잡하게 설계한 베이스를 가지고 있어, 추가로 나쁜 짓을 해도 이해하는 게 쉽지 않게 되어 버렸다.

(금액도 단순화 했고, 다른 장비로 약간의 돈을 챙기는 것도 뺐다.) 죄없는 상담사분이 고생하며 설명한 것을 나름 이해한 것이라, 더 복잡한 장치가 숨어 있을 수도 있다. 어딘가에는 더 정확한 설명이 있겠지만, 찾아 보기 귀찮다. 어차피 세 회사 중 하나를 써야 하는데, 다 똑같으니 알 필요 없는 내용일지도 모르겠다.

2
0
1
0
0

잡곡밥 & 두부야채볶음

에어프라이어에 두부 바삭하게 돌리고 야채는 전자레인지에 미리 돌려서 숨 좀 죽이고 볶기만 하면 끝이니 꽤 편하다. 요리하는걸 좋아하는 편이지만 치우는 것도 귀찮고 매사가 귀찮은 성격이라 품은 적게 들어가지만 최대한 맛있게 먹는게 좋더라.

점심 밥
0
1
0
0

최근 하스켈 리포트를 보니, 언어 서버 지원이 뭔가 바뀌었답니다.

Hannes made hie-bios use Cabal’s --with-repl command to load the session, which greatly simplifies the implementation and its treatment of multiple home units

이런 게 있네요. 당연히 --with-repl 로 했어야 하는 것 아닌가, 기존에는 어떻게 했나 찾아보니, 각 툴들이 각자 도생하고 있었다네요. 명확히 동일한 환경으로 언어 서버가 실행되는 줄 알았는데, 아니었나 봅니다.

2

저는 재밌게 보고 있는 뉴스레터입니다.
메일링 리스트가 한빛 출판사 홍보 목적도 있을테지만, 직접적인 영리 목적은 아니라 판단돼서 링크 올릴까 말까 했습니다. 저 같으면 많은 분들 보라고 SNS에 올린 제 글이 소개되면 으쓱할 것 같긴 한데, 민희님도 저와 같은 생각일지 어떨지 모르니 멈칫 했습니다. @hongminhee洪 民憙 (Hong Minhee)

1
2

lionhairdino replied to the below article:

레코드 생성자

박준규 @curry@hackers.pub

하스켈에서 레코드 타입을 다루는 다양한 관용구를 소개하는 글입니다. 레코드 생성 시 `NamedFieldPuns`나 `RecordWildCards` 확장 기능을 활용하여 코드를 간결하게 만들 수 있으며, 레코드 필드에 접근할 때는 접근자 함수, 패턴 매칭, 또는 `RecordDotSyntax` 확장을 사용할 수 있습니다. 일부 패키지에서는 레코드 생성자를 숨기고 스마트 생성자를 제공하여 API를 제어하기도 합니다. 저자는 스마트 생성자보다는 레코드 생성자를 직접 내보내는 방식을 선호하며, 이는 하스켈 입문자들의 진입 장벽을 낮추고 코드 기여를 활성화하는 데 도움이 된다고 주장합니다. 장기적으로는 언어 차원에서 기본값을 가지는 필드를 지원하여 레코드 타입 정의를 더욱 유연하게 만들 수 있을 것이라는 전망을 제시하며, 이 글은 하스켈 패키지 작성자와 사용자 모두에게 유용한 정보를 제공합니다.

Read more →
5

언어가 성장하면서, 점점 편의 기능이나 슈퍼 울트라 멋진 이펙티브 패턴들이 나오는 건 양날의 검 같아요. 이들이 많을 수록 입문자들은 더 제대로가 아닌 코딩을 할 확률이 올라가는 것 같습니다. 레코드도 마지막에 언급한 디폴트 기능을 언어 차원에서 지원하면, 모든 게 깔끔한데 말입니다. 물론 대의를 위해 지원하지 못하는 동작들을 위한 패턴들은 어쩔 수 없지만요. @curry박준규

0
0

커뮤니케이션 북스의 어택이 또 시작 되는 군요. 한 번도 본적이 없어 잘 모릅니다만, 책을 출판하기 위한 여러 절차들을 고려했을 때, 이 정도로 빠르게 다량의 책을 쏟아 내는 게 가능한가 싶네요.

0
0
0
0
0

lionhairdino replied to the below article:

하스켈을 잘 모르는 프로그래머도 이해하기 쉬운 하스켈 코드 작성법

박준규 @curry@hackers.pub

이 글은 하스켈 코드의 가독성을 높이기 위한 실용적인 팁을 제시합니다. 저자는 하스켈 입문자들이 흔히 겪는 어려움을 해결하고, 코드를 더 쉽게 이해할 수 있도록 6가지 규칙을 제안합니다. 핵심은 달러 기호($) 사용을 자제하고, 연산자는 결합 가능한 것만 사용하며, do 표기법을 적극적으로 활용하는 것입니다. 또한, 렌즈 라이브러리 사용을 미루고, where와 let을 사용하여 코드를 구조화하며, 포인트 프리 스타일을 적절히 사용하는 것이 중요하다고 강조합니다. 이러한 규칙들을 따르면 하스켈 코드가 더욱 명확해지고, 함수형 프로그래밍에 익숙하지 않은 개발자들도 쉽게 이해할 수 있게 됩니다. 이 글은 하스켈의 진입 장벽을 낮추고, 더 많은 사람들이 이 언어를 배우고 활용할 수 있도록 돕는 데 기여합니다.

Read more →
11

이 글 저자분의 여러 인터넷 문서들로 공부하는데 많은 도움을 받고 있는데요. (업자가 볼만한 글을 진짜 많이 쏟아내는 감사한 분입니다.) 딱히 반론까지는 아니고, 최근 제가 생각하는 방향과 다른 게 하나 보입니다. 함수형에서 적용applicative은 너무나 중요한 요소입니다. (function을 매핑 정도로 인식했었는데, function 단어 뜻 자체가 무언가에 적용하는 것을 말합니다.) 함수형은(하스켈은) 적용을 반복해서 프로그램을 완성시켜 나갑니다. 코드 자체를, 비하스켈러들에게 홍보하기 위한, 홍보물로 본다면, $를 쓰지말자는 충분히 의미 있는 의견이지만, 실제 "하스켈 이해"를 제대로 하는데는 오히려 돌아가는 길이 될 수도 있지 않을까 조심스럽게 생각해 봅니다. $가 단순 괄호 아끼기가 아닌, 적용이란 중요한 동작 표현을 일관성 있게 하는 것으로 받아들이면, 적용의 추상화를 이용한 패턴들에서 $가 있는 것을 당연하게 받아 들일 수 있습니다.

요즘들어, 제가 여러 함수형 코딩 패턴을 이용하는 건, 뭘 알아서가 아니라, 그저 경험으로 쓰고 있다는 생각이 듭니다. 이런 문제에선 이런 패턴을 쓰더라가 경험으로 익혀지기 전에, 원리를 알고 있어 처음 보는 문제들에도, 패턴을 적소에 적용하고 싶은데, 잘 안됩니다. 물론 제 지능의 문제가 제일 크겠지만, 한 편으론 함수형을 제대로 알려주는 텍스트들을 못 만나서 그렇지 않을까 하는 건방진 생각도 듭니다. 좋은 텍스트가 없다는 뜻은 아닙니다. 제가 비전공자라 디폴트로 봐야하는 바이블들을 놓쳤을 확률이 높습니다.

저는 현재의 적용을 바라보는 눈을 갖는데, 매우 오래 걸렸습니다. 그다지 배경 지식을 요하는 것도 아니라서, 짚어주는 텍스트만 만났어도 입문에 크게 도움이 됐을텐데 하는 아쉬움이 있습니다.

지금의 제 생각으론 펑터적용으로 현실을 모델링할 수 있으면, 찐 함수형 프로그래머 아닐까 싶어요. @curry박준규

1

lionhairdino shared the below article:

하스켈을 잘 모르는 프로그래머도 이해하기 쉬운 하스켈 코드 작성법

박준규 @curry@hackers.pub

이 글은 하스켈 코드의 가독성을 높이기 위한 실용적인 팁을 제시합니다. 저자는 하스켈 입문자들이 흔히 겪는 어려움을 해결하고, 코드를 더 쉽게 이해할 수 있도록 6가지 규칙을 제안합니다. 핵심은 달러 기호($) 사용을 자제하고, 연산자는 결합 가능한 것만 사용하며, do 표기법을 적극적으로 활용하는 것입니다. 또한, 렌즈 라이브러리 사용을 미루고, where와 let을 사용하여 코드를 구조화하며, 포인트 프리 스타일을 적절히 사용하는 것이 중요하다고 강조합니다. 이러한 규칙들을 따르면 하스켈 코드가 더욱 명확해지고, 함수형 프로그래밍에 익숙하지 않은 개발자들도 쉽게 이해할 수 있게 됩니다. 이 글은 하스켈의 진입 장벽을 낮추고, 더 많은 사람들이 이 언어를 배우고 활용할 수 있도록 돕는 데 기여합니다.

Read more →
11
1
4
1

오래간만에 모나드 글(준규님이 올리신 글)을 보며 끄덕 끄덕하긴 했습니다.

어떻게든 정착 시키면, 모나드 말고도 재미난 개념들이 널려 있는데, 그 것들도 모두 익히게 해서 하스켈을 주력으로 쓰는 사람이 되게 만들자...면, 모나드를 최대한 숨겨서, 언젠가 모나드 개념을 파야 하는 때가 와도, 본전 생각나게 해서 못나가게 만들자라면, 그렇다면, 충분히 의미가 있는 작전일 것 같습니다.

어디까지나 개인적인 통계인데요. 주변에 하스켈을 짱짱하게 하는 분들이, 하스켈의 여러 개념을 양분 삼아 다른 언어로 경제 활동을 하는 분이 대부분입니다. 그렇다면, 하스켈로 유입시키기 위한 노력으로 모나드같은 것들을 숨기는 게 의미가 있나 싶은 생각도 듭니다. 어차피, 그 난해한 개념들을 이해하고싶어 하스켈을 만지작 하는 분들이 더 많은 것 아닌가 싶어서요.

(아직도 모나드를 찜찜하게 알고 있는 사람의 눈입니다.)

2
1
1
1
0
0

Ailrun (UTC-5/-4) replied to the below article:

공허한 참

박준규 @curry@hackers.pub

하스켈의 `all` 함수에 빈 리스트를 넣었을 때 왜 `True`가 반환되는지에 대한 의문을 "공허한 참(Vacuous truth)"이라는 개념을 통해 탐구합니다. 흔히 '구현이 그렇게 되어 있으니까'라고 생각할 수 있지만, 저자는 이 현상을 논리적으로 분석합니다. `all` 함수의 구현 방식과, 빈 리스트에 대한 연산 결과가 전체 결과에 미치는 영향을 설명하며, 공집합의 모든 원소가 짝수라는 명제가 참인 이유와 유사한 논리적 근거를 제시합니다. 이를 통해 코드와 수학 간의 연결고리를 발견하고, 마지막으로 ChatGPT가 생성한 유머러스한 이미지를 곁들여 독자에게 즐거움을 선사합니다.

Read more →
5

@curry박준규 all을 다음과 같이 정의하면 문제가 무엇일까요?

all p [] = False
all p [x] = p x
all p (x:xs) = p x && all xs

이 질문에 대한 대답 중 all의 의미에 관한 것이 있을 겁니다. 논리적으로 "모든 ...에 대해"를 어떻게 이해해야 하는냐에 대한 것 말이지요.

공집합을 직접 사용하는 것이 가장 간단한 예시겠지만, 좀 더 논리학에서 자주 사용되는 예시로는 "20세기의 모든 프랑스 왕은 대머리다"가 있겠습니다. 이는 무의미하게 (Vacuously) 참인데요, 왜냐면 19세기를 마지막으로 프랑스에는 더 이상 왕이 없기 때문이지요. 즉, 일반적으로 "모든 ...에 대해"에서 "..." 부분이 (결과적으로) 공집합일 경우 "모든 ..."에 의해 수식된 본문이 어떤 문장인지와는 상관 없이 참이라고 이해한다는 것이지요.

5

IQ 테스트로 인간을 판별하고 구분짓는것에는 불편한 느낌이 들지만(그게 쓸모없단 얘긴 아님), 그와중에 우리집 강아지 견종인 요크셔테리어가 똑똑한 견종으로 분류되는 글을 보면 진심으로 뿌듯하다...

1
1
0

자연스럽게 존재한다는 말이 이해 갔다 안갔다 하는데요. 그런 요소들은 체계system가 자연스런 동작을 하게 정의했다고 생각이 들더라고요. 0이나, 2의 0제곱 같은 것들이요. (수학적 철학적으로 심오한 뭔가가 있을 것 같긴 한데 모릅니다.)재귀를 돌며 끝을 보려면 []와 만날텐데, 이 것과 지금까지의 True&&해서 False가 나오면 안되니까 True구나 하는 엔지니어 눈만 있어서, 저는 공부가 더딘가 봅니다.

True && True = True
True && False = False

&&한테는 True가 항등원Identity니까, 재귀를 마무리 짓기에는 항등원이 딱이다 하고 휘리릭 넘어갑니다.

@curry박준규

0

lionhairdino replied to the below article:

공허한 참

박준규 @curry@hackers.pub

하스켈의 `all` 함수에 빈 리스트를 넣었을 때 왜 `True`가 반환되는지에 대한 의문을 "공허한 참(Vacuous truth)"이라는 개념을 통해 탐구합니다. 흔히 '구현이 그렇게 되어 있으니까'라고 생각할 수 있지만, 저자는 이 현상을 논리적으로 분석합니다. `all` 함수의 구현 방식과, 빈 리스트에 대한 연산 결과가 전체 결과에 미치는 영향을 설명하며, 공집합의 모든 원소가 짝수라는 명제가 참인 이유와 유사한 논리적 근거를 제시합니다. 이를 통해 코드와 수학 간의 연결고리를 발견하고, 마지막으로 ChatGPT가 생성한 유머러스한 이미지를 곁들여 독자에게 즐거움을 선사합니다.

Read more →
5

자연스럽게 존재한다는 말이 이해 갔다 안갔다 하는데요. 그런 요소들은 체계system가 자연스런 동작을 하게 정의했다고 생각이 들더라고요. 0이나, 2의 0제곱 같은 것들이요. (수학적 철학적으로 심오한 뭔가가 있을 것 같긴 한데 모릅니다.)재귀를 돌며 끝을 보려면 []와 만날텐데, 이 것과 지금까지의 True&&해서 False가 나오면 안되니까 True구나 하는 엔지니어 눈만 있어서, 저는 공부가 더딘가 봅니다.

True && True = True
True && False = False

&&한테는 True가 항등원Identity니까, 재귀를 마무리 짓기에는 항등원이 딱이다 하고 휘리릭 넘어갑니다.

@curry박준규

1
1
1
0
0
0

편한 분위기여서 생각 나는 대로 막 질문하고, "저 개념이 없습니다"를 부끄러운 줄 모르고 막 쏴댔네요. 해커스펍 매일 들어오지만, 페디파이 뭔지 잘 모릅니다. 지금 만들고 있는 서비스가 페디파이 지원하면 좋지 않을까 막연히 생각 중이었는데, 귀한 답을 해주신 분들 감사합니다.

4
1
0