Profile img

lionhairdino

@lionhairdino@hackers.pub · 77 following · 86 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->b, b->c 합성의 구현은 a에 a->b를 적용 $의 체이닝으로 볼 수 있다.
b->c $ a->b $ id a

λ> (+1) $ (+2) $ 3

a->mb, b->mc 합성은 ma에 a->mb를 적용 >>=의 체이닝
return a >>= a->mb >>= b->mc

λ> Just 3 >>= (\x -> Just (x+1)) >>= (\x -> Just (x+2))

wa->b, wb->c 합성은 wa->b를 wa에 적용 extend의 체이닝
wb->c extend (wa->b extend duplicate wa)

λ> (\(Identity x) -> x+1) `extend` (\(Identity x) -> x+2) (duplicate (Identity 3))

이런 눈으로 보면, Functor 적용 <$>, Applicatives 적용<*>(이 둘은 다른 결에 있긴 하지만) 등 이 덜 낯설게 보인다.
(코모나드 정리 노트 중 일부입니다.)

0

@lionhairdino 제가 한건 기초적인 수정이라 거기에 대해 큰 보상을 바라진 않습니다. 반대로, 치킨먹으며 1시간이면 고칠 문제를 오랫동안 방치한 그 팀의 물리학자들에게 응당의 처벌이 가해지기를 바랍니다.

1
1
0

친구가 외국 반도체회사에 다니는데 이름만 들으면 다 아는 세계에서 손꼽히는 회사다. 1년 전쯤에, 친구가 자기 팀에서 예전부터 쓰고있는 시뮬레이션 코드가 너무 복잡해서 리팩토링 하고 싶다고 나를 찾아왔다. 한 2, 3000줄 되는 Numpy 코드였다.

나는 시뮬레이션의 의미 자체는 전혀 이해를 못하니(이래서 보안문제도 익스큐즈 할수 있었을 것이다), 그냥 코드의 모양만 보고 이상한 부분을 조금씩 고쳐나갔다. 그... 전형적인 물리학자들의 실험실 코드였다(코드를 못짜는건 이해를 하는데, 거기에 대해 한치의 부끄러움도 느끼지 않는다는 점이 뒷목을 잡게 만든다). Numpy 함수도 제대로 활용을 못해놨길래, 나도 Numpy 잘 못쓰지만 대충 이런 함수가 아마 있겠지... 하고 검색해서 찾아내서 교체하고 이런걸 반복했다.

이것저것 고친 다음에 잘돌아가나 한번 실행을 해봤는데, 이럴수가. 시뮬레이션이 1000배 빨라졌다. 아니 뭐, 한 2배 3배 빨라졌으면 내 솜씨라고 자부할텐데, 1000배 빨라진거는 그냥 원래 코드가 똥통이었다고 해석할수 밖에 없다. 구라안치고 정말 1000배다. 1000배의 성능향상의 보답으로 나는 교촌치킨웨지콤보세트를 현장에서 받아먹었다.

그 이후에 어떤 일이 있었냐. 기존 시뮬레이션 코드로는 하루에 시뮬레이션을 2, 3번정도밖에 돌리지 못했는데, 1000배 빨라지고 나니까 결과가 수십초만에 나오니 하루에 수백번 돌릴수 있게 된것이다(내가 고친 코드가 전부는 아니어서 1000배 향상은 아닌데, 가장 큰 병목이긴 해서 결국 100배 이상이라는 듯). 그때부터 100배 많아진 데이터를 처리하기 위한 인프라가 필요해졌다. 그래서 거기 개발팀이 데이터베이스와 데이터 파이프라인 구축을 시작하게 되었다고 한다. 그 팀에서는 일종의 특이점이 시작된것이다;;

결론: 교촌치킨웨지콤보 세트는 개맛있었다.

1
1
1

lionhairdino replied to the below article:

함수형 언어의 평가와 선택

Ailrun (UTC-5/-4) @ailrun@hackers.pub

이 글은 함수형 언어의 핵심 개념을 람다 대수를 통해 소개하며, 함수형 언어의 평가 방식에 대한 깊이 있는 이해를 제공합니다. 람다 대수의 기본 요소인 변수, 함수, 함수 호출을 설명하고, 값에 의한 호출(CBV)과 이름에 의한 호출(CBN)의 차이점을 명확히 분석합니다. 특히, 폴 블레인 레비의 "값 밀기에 의한 호출(CBPV)"을 소개하며, 이 방식이 CBV와 CBN을 모두 포괄할 수 있는 강력한 도구임을 강조합니다. CBPV가 함수와 함수 호출을 스택 기반으로 어떻게 다르게 해석하는지, 그리고 이를 통해 람다 대수를 기계 수준으로 컴파일할 때 얻을 수 있는 이점을 설명합니다. 항수 분석과 같은 최적화 기법을 CBPV를 통해 어떻게 더 명확하게 표현할 수 있는지 보여주며, GHC 컴파일러의 중간 언어로서 CBPV의 중요성을 부각합니다. 이 글은 함수형 언어의 깊은 이론적 배경과 실제 컴파일러 구현 사이의 연결고리를 탐구하고자 하는 독자에게 유용한 통찰력을 제공합니다.

Read more →
15
3
0

(비전공자가 볼 내용은 아닌 것 같긴 한데요.) 취미 공부하는 사람의 질문입니다.
"인자를 받는다"는 행위를
"인자를 스택에 넣는다" 와 "인자를 스택에서 빼낸다" 둘 로 쪼개어
보는 아이디어에서 시작하는 것으로 보면 되나요?
그래서 adjoint란 용어가 아른 거리는 건가 싶습니다.

람다식을, 인자가 아직 들어오지 않아 reduce할 게 없는 으로 볼 때는
[1.인자를 스택에 push ---2.인자를 스택에서 pop] 이 없어 reduce할 게 없는 상태로 봤는데,
CBPN에선 [2.인자를 스택에서 pop]은 있고, 이 걸로 reduce할 게 있는 상태.
로 본다는 얘기인가요?

위 설명에서 질문하고 싶은 것도 한 가득이고, @domatdo도막도 님의 이어지는 질문도 어렵긴 한데, 뭔가 전부는 아니더라도 "제가 필요한 정도"의 것은 건져갈 게 보이는 것 같아 질문드립니다.
@ailrunAilrun (UTC-5/-4)

0

해커즈 퍼브의 favicon 이야기가 나왔을 때 잠깐 생각나는 대로 대충 낙서해 본 것이 있습니다. (말 그대로 대충 낙서입니다. 이대로 쓰자는 뜻은 아닙니다. 너무 진지하게 받아들이지는 마시고, 브레인스토밍 정도로 생각해 주시길...)

  • 퍼브 간판의 일반적인 형상을 가져왔습니다.
  • 마실 것을 파는 장소의 간판 같은 느낌을 유지하면서, 정확히 어떤 음료인지는 의도적으로 알 수 없게 했습니다. ("퍼브"는 맥주를 주력으로 하는 장소라는 인식이 있는 것 같습니다만, 법적·의료적·종교적 여러 가지 이유로 알코올을 음용할 수 없는 사람들이 세상에는 아주 많기 때문에, 일부러 "맥주"의 이미지를 배제했습니다. 해커즈 퍼브는 술 안/못 마시는 사람도 편하게 올 수 있는 장소가 되는 것이, 행동 강령의 취지에도 부합한다는 생각이었습니다.)
  • 간판 부분은 잘 보시면 "퍼브"라는 한글 표기에서 "ㅍ"와 "ㅂ"를 담고 있습니다. 가로대와 간판이 이어지는 부분이 "ㅍ"의 형상이고, 물잔이 "ㅂ"의 형상입니다. 물론 해커즈 퍼브는 한국어 전용 커뮤니티도 아니고 한글 전용 커뮤니티는 더더욱 아닙니다. 한글이 꼭 들어가야 할 이유는 없습니다. 하지만 반대로 한글을 안 쓸 이유도 없지 않은가? 뭔가를 모티브로 쓰긴 써야 하는데 그게 한글일 수도 있는 것 아닌가? 그래서 넣어 봤습니다. 😅
  • "Hacker's Pub"를 구성하는 글자들을 그대로 집어넣는 것을 일부러 피했습니다. 우선, 아이콘은 "Hackers' Pub"이라는 텍스트와 병치될 가능성이 높은데, 그렇다면 "H"나 "P"가 들어 있는 것은 중복이 되고 정보 전달의 낭비가 됩니다. 그리고, favicon 으로 쓰일 가능성이 높은데, 다른 사이트들에도 알파벳을 형상화한 아이콘이 많습니다. 추상적 형상으로서 다른 아이콘들과 겹칠 여지가 적을수록 식별자로서의 기능과 효용이 극대화될 것이라는 생각이었습니다. (물론, 엄밀히 따지면, 이 아이콘도 전체 형상에는 알파벳 "h"의 구조가 숨어 있고, 그것을 의도하긴 했습니다만, 가장 먼저 눈에 들어오는 특징은 아니죠.)
왼쪽의 기둥으로부터 오른쪽으로 뻗은 가로대와, 가로대에 매달린 간판의 형상으로, 간판에는 물잔 모양의 그림
0

lionhairdino shared the below article:

함수형 언어의 평가와 선택

Ailrun (UTC-5/-4) @ailrun@hackers.pub

이 글은 함수형 언어의 핵심 개념을 람다 대수를 통해 소개하며, 함수형 언어의 평가 방식에 대한 깊이 있는 이해를 제공합니다. 람다 대수의 기본 요소인 변수, 함수, 함수 호출을 설명하고, 값에 의한 호출(CBV)과 이름에 의한 호출(CBN)의 차이점을 명확히 분석합니다. 특히, 폴 블레인 레비의 "값 밀기에 의한 호출(CBPV)"을 소개하며, 이 방식이 CBV와 CBN을 모두 포괄할 수 있는 강력한 도구임을 강조합니다. CBPV가 함수와 함수 호출을 스택 기반으로 어떻게 다르게 해석하는지, 그리고 이를 통해 람다 대수를 기계 수준으로 컴파일할 때 얻을 수 있는 이점을 설명합니다. 항수 분석과 같은 최적화 기법을 CBPV를 통해 어떻게 더 명확하게 표현할 수 있는지 보여주며, GHC 컴파일러의 중간 언어로서 CBPV의 중요성을 부각합니다. 이 글은 함수형 언어의 깊은 이론적 배경과 실제 컴파일러 구현 사이의 연결고리를 탐구하고자 하는 독자에게 유용한 통찰력을 제공합니다.

Read more →
15
3
0

洪 民憙 (Hong Minhee) replied to the below article:

함수형 언어의 평가와 선택

Ailrun (UTC-5/-4) @ailrun@hackers.pub

이 글은 함수형 언어의 핵심 개념을 람다 대수를 통해 소개하며, 함수형 언어의 평가 방식에 대한 깊이 있는 이해를 제공합니다. 람다 대수의 기본 요소인 변수, 함수, 함수 호출을 설명하고, 값에 의한 호출(CBV)과 이름에 의한 호출(CBN)의 차이점을 명확히 분석합니다. 특히, 폴 블레인 레비의 "값 밀기에 의한 호출(CBPV)"을 소개하며, 이 방식이 CBV와 CBN을 모두 포괄할 수 있는 강력한 도구임을 강조합니다. CBPV가 함수와 함수 호출을 스택 기반으로 어떻게 다르게 해석하는지, 그리고 이를 통해 람다 대수를 기계 수준으로 컴파일할 때 얻을 수 있는 이점을 설명합니다. 항수 분석과 같은 최적화 기법을 CBPV를 통해 어떻게 더 명확하게 표현할 수 있는지 보여주며, GHC 컴파일러의 중간 언어로서 CBPV의 중요성을 부각합니다. 이 글은 함수형 언어의 깊은 이론적 배경과 실제 컴파일러 구현 사이의 연결고리를 탐구하고자 하는 독자에게 유용한 통찰력을 제공합니다.

Read more →
15
3
0
1
0

저도 두 가지 쟁점 모두 동의하는 편입니다. 그리고, 별개의 이야기입니다만, $가르칠 때에는 그냥 문법이라고 가르치는 게 학습자의 이해와 응용이 압도적으로 빠르고 좋았습니다.

"이건 여기서부터 뒤로는 다 괄호로 감싸겠다는 뜻이라고 생각하세요."

이러면 한 방에 설명이 끝나고, 필요성이나 편리성에 대해서도 알아서들 납득하는 것이죠. 연산자 우선순위나 좌결합 우결합 등은 그게 되고 나서 얘기하고요. 그러면 "아, 이게 그래서 이렇게 되는 거였군요?" 하면서, 훨씬 쉽게 이해합니다. 이걸 거꾸로 좌결합 우결합 어쩌고부터 가르치려고 하면 다들 꾸벅꾸벅 졸아요... ㅋㅋ ㅠㅠ

(결국 "모나드란 무엇인가"부터 배우면/가르치면 안 된다는 주장과 같은 맥락입니다.)



RE: https://hackers.pub/@bgl/01963c3b-98fa-7432-a62f-0d2dfc0691bf

함수형을 공부하기 전, 함수 작업?의 대상을 {함수, 인자}로만 인식했었는데, {함수, 인자, 적용}으로 인식하기 시작하면서 편해지는 게 많아졌습니다. 그런데 이게 편한 이유가 다른 배경 지식이 생겨서 그런 건지, 이 길로 가는게 쉬운 길이어서 그런 건지는 잘 모르겠습니다. 여기서 시작하면 $<$>가 자연스러워 보였습니다. 혼자 결론에 도달하고는, 누군가가 처음 공부할 때 알려줬으면 좋았겠는데 싶었습니다. 그냥 혼자 생각입니다.

꾸벅 꾸벅 조는 건 완전 동의입니다. 제가 혼자 그 공부하면서 졸았습니다. @xtjuxtapose

1
1

파폭에서 탭 고정pinning을 해서 SNS들을 쓰고 있는데요. 알림 박스의 빨간점이, 다른 서비스들 처럼 파비콘에도 찍히면 좋겠는데요.(그림에서 링크드인은 새 글도 있고, DM도 있고) 아직 기능이 없으면 조용히 기다리려 했는데, 알림 박스 기능이 이미 있으니, 뭔가 어렵지 않은 작업으로 되지 않을까 싶어 글 남깁니다.

탭 고정에서 보이는 파비콘
1
0

하스켈 코드 포매터 stylish-haskell을 잘 쓰고 있습니다. Vim에서 :%!stylish-haskell이라고 입력하는 방식으로 사용하는데요, 코드에 문제가 있을 경우 코드 전체가 지워지고 다음과 같은 문자열로 대체됩니다.

<string>:1:18: error: [GHC-58481] parse error on input `!'

Vim에서 작업 중이므로 단순히 u를 눌러서 취소하면 되긴 합니다만 혹시 다른 방법이 있을까요?

0
1
0

글을 한 방에 써야되는데, 빠진 말이 생각나 댓을 달면, 타임라인에 중복이 너무 많이 나와 진상 유저가 된 느낌이 드네요 ^^;; 댓의 원 글이 안나와야 되는 것 아닐까 싶어요. 클릭해서 들어가면 타래를 보고... 개인 의견입니다.

0
0
0

패스키 개념이 없어, 검색에 의존해서 NixOS, 파이어폭스, 인증 장비는 스마트폰으로 어찌 해보려 했더니, 안되는 건가 봅니다. PC에서 기존 메일 방식으로 로그인 하고, 아이폰에서는 패스키로 로그인 해야겠습니다.

1

아주 오래 전, 스콧마이어스 책을 곽용재님 번역으로 봤었는데, (아는 분은 아니고, 이 분 C++ 번역 책을, 번역책으론 드물게 좋아합니다.) 오, 스콧의 정리가 여러 사람의 시간을 살리겠구나.. 했었습니다. 근데, 지금 보면, Effective C ++ 책에 있는 내용들은, 왜 프로그래머가 조심하고, 조심하게 만들었을까 싶은 것들이 수두룩 합니다. 이런 것들은 기계가(혹은 언어 스펙이) 알아서 해야 할 일들 아닌가 싶습니다.

예전엔 스콧의 테크닉쯤은 미리 알고 있는 게 숙련자였는데, 모던? 언어들을 만지는 지금은 그 테크닉들이 다 원시적으로 보입니다. 한 때는 밥벌이에 필수 지식이었을텐데요.

0

아주 오래 전, 스콧마이어스 책을 곽용재님 번역으로 봤었는데, (아는 분은 아니고, 이 분 C++ 번역 책을, 번역책으론 드물게 좋아합니다.) 오, 스콧의 정리가 여러 사람의 시간을 살리겠구나.. 했었습니다. 근데, 지금 보면, Effective C ++ 책에 있는 내용들은, 왜 프로그래머가 조심하고, 조심하게 만들었을까 싶은 것들이 수두룩 합니다. 이런 것들은 기계가(혹은 언어 스펙이) 알아서 해야 할 일들 아닌가 싶습니다.

예전엔 스콧의 테크닉쯤은 미리 알고 있는 게 숙련자였는데, 모던? 언어들을 만지는 지금은 그 테크닉들이 다 원시적으로 보입니다. 한 때는 밥벌이에 필수 지식이었을텐데요.

0
1
8
1
1
1
0
1
0
1
0

(어디까지나 개인 취향입니다.) 저는 글을 다른 사람과의 대화와 비슷한 느낌을 가지고 읽습니다. 제 주변에 어떤 사람도 저에게 대화할 때, ~음, ~슴, ~함 체로 말하지 않습니다. 뭐뭐 하였음, 그래서 이랬음, 결과로 뭐뭐함 ... 좀 어색하게 들리는데요. 저만 그런가요? 몇 년 째 고맙게 보고 있는 긱뉴스가 이 정책을 고수하는데, 아직도 어색하네요.

0

이제 타래(쓰레드)만 중복 안되게 묶이고, 브라우저 파비콘에 새글 알림이 뜨면, 당분간 더 바랄게 없겠습니다...지만, 사람 마음은 간사하니 그 때 되며 또 뭐가 생기겠지요.ㅎㅎ

0
1
1
0
0
2
0
0
0

어떻게 해야 원 글 아이디 느낌이 날까요? ➟ @hongminhee洪 民憙 (Hong Minhee) @kodingwarriorJaeyeol Lee
어떻게 해야 원 글 아이디 느낌이 날까요? ↝ @hongminhee洪 民憙 (Hong Minhee)
어떻게 해야 원 글 아이디 느낌이 날까요? ⇝ @hongminhee洪 民憙 (Hong Minhee)
어떻게 해야 원 글 아이디 느낌이 날까요? ➚ @hongminhee洪 民憙 (Hong Minhee)
어떻게 해야 원 글 아이디 느낌이 날까요? ⮍ @hongminhee洪 民憙 (Hong Minhee)
어떻게 해야 원 글 아이디 느낌이 날까요? ⮭ @hongminhee洪 民憙 (Hong Minhee)

0