본문 바로가기

프로그래밍 기술 노트

(86)
[Expression Problem] 객체 대수 (Object algebras) 와 Tagless Final [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 -> 지금 여기 솔직히 말하면 먼소리는 모르겠는데, 일단 포스팅 이전 장에서 나온 Visitor pattern 의 고오오급 패턴? 같은건데 대수학 (algebra) 개념을 객체에 적용 했다고 보면 될 듯 하다. [해당 글] 을 기준으로, 함수형 예시로 매번나오는 E..
[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..