fixed point combinator

Y Combinator가 인자로 주어진 함수에 대한 fixed point를 만든다는 것의 의미가 잘 이해되지 않아서 정리해보는 중. 헷갈렸던 이유는 재귀를 종료하는 것이 Y의 역할이라고 오해해서였다. Y는 단지 함수를 무한하게 반복시킬 뿐이다.

2022년 6월 7일
·
0개의 댓글
·
post-thumbnail

well-formed iterable에 대한 오해

국내 블로그에서는 well-formed iterable을 "Iterator이면서 Iterable인 객체", "Symbol.iterator가 this를 리턴"으로 설명하는데, 이것은 잘못된 설명이다.

2022년 1월 26일
·
0개의 댓글
·

commutative diagram

오브젝트와 화살표로 이루어진 모든 다이어그램에서 시작점과 끝점이 각각 하나씩 있고, 모든 화살표를 따라갔을때 시작점과 끝점이 동일하다면, 이 diagram은 commute하다.

2021년 4월 4일
·
0개의 댓글
·

row polymorphism

row polymorphism은 structural subtyping을 떠오르게 하지만 둘은 다르다.

2021년 2월 25일
·
0개의 댓글
·

defunctionalization

higher-order function을 first-order로 대체시키는 것.사용되는 함수를 데이터화 시켜서 구현한다.

2021년 1월 25일
·
0개의 댓글
·

identity functor

프로그래밍 언어에 존재하는 모든 구체적인 타입은 암시적으로 identity functor로 lifting 되어 있는상태인가?η가 Identity functor인 I를 functor M으로 변환하는 natural transformation 이고이에 해당하는 haskell

2020년 10월 26일
·
0개의 댓글
·

endo

그리스어가 어원으로 inner, internal, within등의 의미를 지닌다. 닫힌계를 의미한다.

2020년 9월 5일
·
0개의 댓글
·

bifunctor & profunctor

fmap(covariant functor), contramap(contravariant functor), bimap(bifunctor)에 대해서 이해했다면 dimap(profunctor)는 어렵지 않다.

2020년 8월 29일
·
0개의 댓글
·

contravariant functor

contravariant functors reverse the direction of composition. - Wikipedia covariant functor F(f∘g)=F(f)∘F(g) contravariant functor F(f∘g)=F(g)∘F(f)

2020년 8월 29일
·
0개의 댓글
·

nominal, branded, structural, opaque

nominal typing C++, Java와 같은 언어들처럼 이름이 다르면 다른 타입으로 인식한다. structural typing Haskell, OCaml은 타입의 구분을 이름이 아닌 실제 형태를 참고해서 구분한다. 타입의 이름은 단지 타입구조에 대한 별칭이라고

2020년 8월 16일
·
0개의 댓글
·

ReasonML PPX

PreProcessor eXtension

2020년 6월 20일
·
0개의 댓글
·

monad란?

모나드를 이해한 개인적인 경험과 의견을 정리하였습니다. 각종 이론적 지식의 전문가가 아니기 때문에 잘못되거나 모호한 설명이 있을 수 있습니다. 그런 부분을 알려주시면 최대한 빠른시일내에 정확한 표현으로 고쳐놓도록 노력하겠습니다.

2020년 5월 17일
·
3개의 댓글
·

callback, cps, call/cc 그리고 monad

Javascript와 비동기 JavaScript에서 비동기를 다루는 방법중 하나는 callback을 사용한 방식이다. 어떤 함수가 와 같은 시그니쳐를 가지고 있을때, 비동기 함수 f는 자신의 작업이 완료되면 인자로 전달받은 cb함수를 호출하게 된다. cb함수를 보통

2020년 5월 13일
·
0개의 댓글
·

Parse, don’t validate

Really, a parser is just a function that consumes less-structured input and produces more-structured output.

2020년 5월 13일
·
0개의 댓글
·

순수 함수적 병렬성 (2)

이 시리즈는 "스칼라로 배우는 함수형 프로그래밍"을 TypeScript로 실습하는 과정을 정리하고 있습니다.run이 비동기 task를 실행하는 구체적인 방법으로 ExecutorService를 선택하고 형식을 나타낸다면, Par는 ExecutorService를 입력받고

2020년 5월 10일
·
0개의 댓글
·

순수 함수적 병렬성 (1)

이 시리즈는 "스칼라로 배우는 함수형 프로그래밍"을 TypeScript로 실습하는 과정을 정리하고 있습니다.1부를 마치고 2부를 들어간다. 2부에서는 함수형 프로그래밍 관점에서의 라이브러리 설계를 다룬다. 우리의 주된 관심사는 합성 능력과 모듈화가 좋은 라이브러리를 만

2020년 5월 10일
·
0개의 댓글
·

순수 함수적 상태 (3)

이 시리즈는 "스칼라로 배우는 함수형 프로그래밍"을 TypeScript로 실습하는 과정을 정리하고 있습니다.RNG용 combinator는 사실 난수 발생을 위해서만 쓰이는건 아니다. 이들은 상태 동작에 작용하는 범용 함수들이며 상태의 구체적인 종류는 신경쓰지 않는다.S

2020년 5월 9일
·
0개의 댓글
·

순수 함수적 상태 (2)

이 시리즈는 "스칼라로 배우는 함수형 프로그래밍"을 TypeScript로 실습하는 과정을 정리하고 있습니다.어떤 형식 A에 대해 RNG => (A, RNG) 형식을 사용해서 하나의 RNG 상태를 다른 RNG 상태로 변환한다. A의 생성은 어떤 RNG에 의존하고 그것을

2020년 5월 9일
·
0개의 댓글
·

순수 함수적 상태 (1)

이 시리즈는 "스칼라로 배우는 함수형 프로그래밍"을 TypeScript로 실습하는 과정을 정리하고 있습니다.JavaScript의 Math.rand는 호출할때 마다 매번 다른 값을 리턴한다. 이 함수를 호출할때마다 갱신되는 어떤 전역 상태가 존재한다고 가정할 수 있을것이

2020년 5월 9일
·
0개의 댓글
·

엄격성과 나태성 (3)

이 시리즈는 "스칼라로 배우는 함수형 프로그래밍"을 TypeScript로 실습한 내용을 정리하고 있습니다. 무한 스트림과 공재귀 연습문제 5.8~5.11 be9e33570249ebd42b99b53c14b67c3d166f3294

2020년 5월 8일
·
0개의 댓글
·