2012-07-22 3 views
24

적어도 1990 년대 말로 돌아 가면 restricted monads을 하스켈에 통합하려는 사람이 있습니다.제한된 모나드의 현재 상태는 무엇입니까?

예를 들어 제한된 모나드가 없으면 Set, Map 또는 probability distributions 중에서 효율적인 모나 딤을 만들 수 없습니다. 몇 년 전부터 다른 사람이이 문제에 대해 파문을 쳤던 SO question이 있습니다. 모든 가능한 제한에 대한 new type class 만들기

그러나 이러한 접근 방식 중 어느 것도 "표준적인"것으로 보이지는 않습니다. Don stewart의 this blog post에 대한 의견을 2007 년에 발견했습니다. 여기서 그는 Indexed types으로 제한된 모나드를 "상당히 가깝게"가지고 있다는 것을 암시했습니다.

현재 상태는 무엇입니까? 현재 제한된 모나드를 수행하는 '정식'방식이 있습니까? 또는 우리는 여전히 임시 해결책으로 살고 있습니까?

+12

제한된 종류의 경우 제한된 종류라고 생각 하겠지만 표준 유형은 너무 복잡하여 아직 가장 많은 공통 솔루션이 아닙니다. – leftaroundabout

답변

11

제한된 모나드를 인코딩하는 방법을 보여주는 Anders Persson, Emil Axelsson 및 Josef Svenningson의 최근 논문이 있습니다. 세부 사항을 잊어 버렸지 만 멋진 종이라는 것을 기억합니다.

Persson, A.; Axelsson, E.; Svenningsson, J. (2011). Generic monadic constructs for embedded languages. 제 23 회 기능 언어 구현 및 응용 심포지엄 IFL 2011.

+1

Norman에게 감사드립니다. 관심이있는 분께는 [Josef Svenningson의 홈페이지] (http://www.cse.chalmers.se/~josefs/)에서 얻을 수 있습니다. –

10

사실 모나드로는 효율적인 모나드 인 을 아무런 제한없이 얻을 수 있습니다. 두 가지 방법으로. 다음 기사 모두 설명 :

http://okmij.org/ftp/Haskell/set-monad.html

기사는 지적 제한된 모나드는 사실은 꽤 이 제한 많은 모나드 숙어를 배제 있음. 나는 구현 방법이 일반적이며 모든 제한된 모나드가 효율성을 잃지 않고 보통의 것으로 변경된 일 수 있다고 추측한다. 따라서 우리는 제한된 모나드가 전혀 필요하지 않다는 것을 으로 보일 수 있습니다.

+0

효율적인 효율적인 모나드 모나드를 만들기 위해 효율적인 모나드 뒤에있는 아이디어를 실제로 사용했습니다 (https://github.com/chris-taylor/hs-probability/blob/master/src/Control/Probability/Bayes.hs 참조).) .. 감사합니다! 나는 다른 제한된 모나드들에 대해 똑같은 일을하는 것에 대해 생각해 보지 못했지만, 그것이 작동하지 않는 이유를 즉시 볼 수는 없다. –

관련 문제