본문 바로가기

프로그래밍 기술 노트/Functional Study

(30)
[Expression Problem] Mutiple Dispatch (Feat Visitor / Multi Method) [Expression Problem] 표현 문제란? [Expression Problem] Open classes , Protocol , 그리고 확장 메서드 [Expression Problem] Type classes [Expression Problem] Mutiple Dispatch (Feat Visitor / Multi Method) -> 지금 여기 [Expression Problem] 객체 대수 (Object algebras) 와 Tagless Final Mutiple dispatch 가 무엇인가 부터 알아보도록 하자 dispatch 는 대충 함수 호출이라고 보면 되고, 어느 함수가 호출될까를 결정하는것이 dynamic 하게 dispatch (== 런타임) mutiple (모든 파라미터) 에 따라서 ..
[Expression Problem] Type classes [Expression Problem] 표현 문제란? [Expression Problem] Open classes , Protocol , 그리고 확장 메서드 [Expression Problem] Type classes -> 지금 여기 [Expression Problem] Mutiple Dispatch (Feat Visitor / Multi Method) [Expression Problem] 객체 대수 (Object algebras) 와 Tagless Final type class 는 Haskell (및 Scala + implicit .. , Rust) 에서 주로 사용하는 기능으로 adhoc (임시적) 다형성을 제공하는 기술이다. (Haskell 을 해본적이 없어서 설명이나 예시가 정확하지는 않음..) ty..
[Expression Problem] Open classes , Protocol , 그리고 확장 메서드 [Expression Problem] 표현 문제란? [Expression Problem] Open classes , Protocol , 그리고 확장 메서드 -> 지금 여기 [Expression Problem] Type classes [Expression Problem] Mutiple Dispatch (Feat Visitor / Multi Method) [Expression Problem] 객체 대수 (Object algebras) 와 Tagless Final Open Classes , 일명 Monkey patching, 은 확장에 열려있는 Class 를 의미한다. Ruby 에서 주로 땜빵할때 많이 사용하는 기술이다. OOP 식 접근법에서 발전?된 솔루션으로 볼 수 있다. 많이 다르지만, 대충보면 비슷한 ..
[Expression Problem] 표현 문제란? [Expression Problem] 표현 문제란? -> 지금 여기 [Expression Problem] Open classes , Protocol , 그리고 확장 메서드 [Expression Problem] Type classes [Expression Problem] Mutiple Dispatch (Feat Visitor / Multi Method) [Expression Problem] 객체 대수 (Object algebras) 와 Tagless Final 프로그래밍에서 Expression Problem 란 기능을 확장할때 발생하는 문제이다. 표현문제라는 것을 들어본적이 없어도, 분명 경험해본 문제일것이며, 예시를 보면 "아~ 이런적이 있지" 라고 생각할것이다. 어떻게 기능을 확장 할 것인가? OOP ..
[Optics/Lens] 내 멋대로 Optics 이해하기 Feat) arrow-kt 불변(Immutable) 은 이미 대세라고 할정도로 중요한 개념으로 자리 잡았고, 대수적 데이터 타입(ADT) 로 디자인해서 이케 저케.. 썸타입이 어쩌고, 곱타입이 어쩌고.. 하는게 요즘 스타일인데, 비단 Haskell / Scala 같은 정통적(?) 인 FP 뿐만 아니라 C# / Kotlin 에서도 ADT 디자인을 위한 목적으로 data class 나 sealed class 를 제공해준다. (따지고 보면 다 ADT 이기도 하고) 그냥 내가 하는 소리가 아니라 진짜 Kotlin release 에서 그렇게 사용한다고 적혀있다. (참고로 한국어 버전에서는 OOP 에서 자주 사용하는 용어인 abstract data type 으로 잘못 번역되어있는데, 영어버전에는 algebraic data type 으로 되어..
[liftIO] 함수형 컨퍼런스 liftIO 후기 함수형같은 마이너한걸 파다보면 한국자료를 찾기가 힘들다... 컨퍼런스같은건 더 없고.. 이런 상황에서 Clojure Korea 에 글이 하나 올라왔는데 단돈 5000원에 티셔츠와 "실제 함수형을 업무에 적용중인 사람들" 의 발표를 들을 수 있는 기회가 되어서 신청하게 되었다. 틈만 나면 열리는 다른 컨퍼런스와 다르게 한국에서 열리는 함수형 컨퍼런스는 찾기 힘들기 때문 ㅜ.ㅜ Clojure / Scala /Haskell 까지! (Fsharp은 없고연..) 다만 발표시간이 좀 짧아서 인지, Deep 한 이야기까지는 끌고가지 못한것 같다. 그리고 Haskell 발표는 상류타입(HKT) 에 대한 이야기같은데 1도 못알아 들었다 행사가 끝나고 함수형 퀴즈 타임이 열렸는데 2등을 차지했다! 상품도 있다 (5000원..
Realworld functional 을 위한 자료들 Realworld gothinkster/realworld: "The mother of all demo apps" — Exemplary fullstack Medium.com clone powered by React, Angular, Node, Django, and many more 🏅 (github.com) 한국사이트가 망해부라서 원문으로 대체 Clojure Design Patterns (mishadoff.com) Clojure Design Patterns Clojure Design Patterns Quick overview of the classic Design Patterns in Clojure Disclaimer: Most patterns are easy to implement because we u..
[Functional Programming] 함수형 훑어보기 같이 공부하는 동아리 사람들에게 함수형에 대하여 알려주기 위하여 공용 Notion 에 정리한 글을 이왕 정리한 김에 블로그에도 같이 올리려고합니다. 친한 지인들께 설명하기 위한 글 + 알려주기 위한글 이므로 완전 초심자가 보기에도 전문가가 보기에도 부족할 내용이지만, 말 그대로 한번 훑어보면서 이러한것이 있구나 정도로 파악하시는데 쓰시면 좋을 듯 합니다. 또한, 무조건적으로 제가 쓴글이 옳은건은 아니지만, 설명하는 내용 특성상 단언하는듯이 적힌 내용이 있습니다. 함수형 패러다임이란 무엇인가? "자, 빠르게 대답해보라. 함수형 프로그래밍이 무엇을 의미하는가? 틀렸다." 함수형의 시초는 존 메카시의 LISP 이며, 이는 알론소 처치의 람다계산법을 컴퓨터 언어로 만든것이다. "세 번째 패러다임은 최근에 들어서..