본문 바로가기

전체

(350)
[Jackson] Subtype 별 Polymorphic De/Serialization 을 제공하는 Deduction Jackson 은 JVM 진영에서 주로 사용하는 JSON 역/직렬화 라이브러리로 JSON 은 이제 Web 에서 빼놓을수없는 포맷이므로.. 자주 사용하게 된다. 그러나 JSON 은 근본이 동적언어인 js 의 (사실상) 표준 포맷이므로, 이를 완전한 정적언어인 Java/Kotlin 등에서 사용할떄 충돌(불일치) 이 발생하게된다. JS 는 같은 이름의 필드지만, 안에 내용물은 쓱싹쓱싹 바뀔수있고, 특히 본인의 경우 가장 신경쓰이는것이, 바로 이질 (Heterogeneous) 적인 Array 이다 {"myset":[ {"name":"Tanker","def":100}, "Dealer", 10]} JS 같은 언어는 Array 에 아무타입이나 전부 들어갈 수 있기 때문에, 막 담아서 보내줄수있는데, 이걸 Jackso..
[HKT] Value / Type / Kind 와 Higher Kinded Type (Feat. 고차함수) 시작 하기에 앞서서.. 함수도 값이라는것을 이해해야 한다. 고차함수란 개념 Order (일반적으로 차수) 란 일종의 단계이다 (Higher order function : 고차함수) 이차함수의 차수는 2 다 -> 이차함수의 order는 2다 예시는 Kotlin , 일부 Scala Value 의 세계 Value 와 타입 우리는 일반적으로 프로그래밍을 할때, Value(값) 를 다룬다, 이 Value 을 분류하는 방법을 Type 이라고 한다. val intValue : Int = 5 val doubleValue : Double = 5.0 val functionValue : (Int) -> Int = { x : Int -> x*2 } val highOrderFunctionValue : ((Int) -> Int)..
[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 으로 되어..