문제

연속이 모나드라고 할 수 있습니까? 그들은 모나드의 하위 집합입니까, 아니면 단순히 모나드를 구현하는 방법입니까?

편집하다: 아니면 내가 틀렸을 수도 있습니다 모나드 보다 추상적 인 개념입니다 연속? (그래서 나는 정말로 사과를 여기 오렌지와 비교하고 있습니다)

도움이 되었습니까?

해결책

간단히 말해서, 모나드의 '바인딩'은 인수로 효과적인 연속 ( '나머지 계산'의 람다)을 취하기 때문에 모나드는 그런 의미에서 연속성입니다. 반면, 아래 다수의 기타 링크에서 제안한 바와 같이 Monadic Syntax Sugars를 사용하여 CPS 언어로 연속 패스 스타일을 효과적으로 구현할 수 있습니다.

Haskell의 'All About Monads'튜토리얼에서 :

https://www.haskell.org/haskellwiki/all_about_monads#the_continuation_monad

F# Continuation Monad, 스타일 루프를 위해 '브레이크'및 '계속'을 구현하는 데 사용됩니다.

http://cs.hubfs.net/forums/thread/9311.aspx

그리고 F#의 문제에 연속 모나드를 적용하는 예 :

http://lorgonblog.spaces.live.com/blog/cns !701679ad17b6d310 !256.entry

다른 팁

연속성 모나드 일뿐 만 아니라 연속과 상태가 있다면 기능적인 모나드를 시뮬레이션 할 수 있다는 점에서 일종의 보편적 인 모나드입니다. 이 인상적이고 고도로 기술적 인 결과는 인상적이고 고도로 기술적 인 마음에서 비롯됩니다. Andrzej Filinski, 1994 년에 글을 썼거나 그에 따라 :

우리는 단위 및 확장 작업이 순수한 기능 용어로 표현되는 모나드가 "복합 가능한 연속"을 가진 콜 별 언어에 포함시킬 수 있음을 보여줍니다.

그들은 할 필요는 없지만 될 수 있습니다. 나는 당신의 질문을 조금 뒤집고 대신 Monads가 연속을 구현하는 방법이라고 말합니다. 그러나 여러 가지 방법으로 연속을 구현할 수 있습니다. 너무 많은 노력없이 C#에서 CPS의 겸손하지만 제한된 팩스를 수행 할 수 있습니다. 예를 들어. 살펴보십시오 연속 모나드 매우 철저한 치료를 위해 Haskell 사이트에서.

그 주제에 대한 아주 좋은 기사 :http://blog.sigfpe.com/2008/12/mother-of-all-monads.html

연속은 프로그램의 특정 기능입니다. 모나드는 유형 생성자입니다.

유형 생성자 Cont<T> 연속 처리 유형 T 모나드가 아닐 것입니다.

하지만, Cont<Cont<T>> 모나드이며, 이것은 일반적으로 "연속 모나드"라고 불립니다.

(언어로 Callcc를 갖는 것은 Cont<Cont<T>> 에게 T.)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top