본문 바로가기

프로그래밍 기술 노트

(89)
Delimited Continuations 가 대체 뭔데? 본 포스팅은 후속문 자체의 정의와 설명에 관한 내용이 아니므로 후속문의 개념은 너무나도 잘 쓰여진 아래 링크 참조 (거의 유일한 한글자료이자 아주 상세하게 쓰여진 자료) Computat ergo est: 후속문(Continuation) : 제1부. 개념과 call/cc (guruma.github.io) Delimited Continuations 이 무엇인지 파악하기 위하여 Continuations(후속문) 을 개념적인 Level 에서 훑어 보자 CPS (Continuations Passing Style) 흔히 callback 이라고 부르는 방식이다. Continuations (후속 작업을) Passing(넘기는) Style(스타일) First-Class Continuation 후속문 자체를 1급 시민으로..
[Monad] 시퀀스를 여행하는 모나드를 위한 안내서 제목이 저런 이유는 Sequence / Traverse 에 관한 내용이기 때문.. Sequence 개발을 하다가 보면 List 같은 형태의 Option/Result 가 필요한 경우가 생기게 된다. 실무에서 자주쓰는 대표적인 예시중에 다음 같은것이 있다. N 개의 URI 에 응답을 조합한다, N개중 1개라도 응답이 오지않으면 Fail 이다. MSA 에서 API Composition 할때나, FE 에서 Server 에 여러번 요청을 할때 등등.. 상당히 많이 쓰이는 로직이다. 간단하게 예시를 들어서 다음과 같다고 해보자, 편의를 위하여 가장 기본적인 Type만 사용하였다. 내 블로그에서 001~003 까지 결과를 알려주는 함수 MyBlog 를 짠다. 요청해야할 URI : ["see-ro-e.tistory.c..
[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 ..