3
A
답변
5
execStateT
이어야합니까? runStateP
은 Pipes.Lift
에서 더 쉽게 할 수 있습니다. 당신이 다른 단계가 다른 효과를 가지고있는 파이프 라인이있을 때 Pipes.Lift
에서
import Pipes
import Pipes.Lift
import Control.Monad.State.Strict
-- unnecessarily specific signature, function work with any Proxy
foo :: Monad m => b -> Consumer a (StateT b m)() -> Consumer a m b
foo b p = liftM snd $ runStateP b p
기능은 중대하다. 파이프 라인의 특정 단계로 효과를 제한하는 것이 좋습니다.
4
danidiaz에서 언급 한 Pipes.Lift
에서 execStateP을 사용할 수 있습니다.
execStateP :: Monad m => s -> Proxy a' a b' b (StateT s m) r -> Proxy a' a b' b m s
편집 : 기본 모나드는 다음 "실행"모나드는 제거 할 수 MFunctor
당신이 스택의 상단에 기본 모나드를 가져 오기 위하여 distribute
기능을 사용할 수있는 경우 일반적으로
그 모나드 레이어. 예를 들어 execStateT
를 사용
distribute
:: (Monad m, Monad (t m), Monad (t (Proxy a' a b' b m)),
MonadTrans t, MFunctor t) =>
Proxy a' a b' b (t m) r -> t (Proxy a' a b' b m) r
: 신중 모나드 스택을 정의하면 MFunctor
제한이 해제 될 수
> :t S.execStateT . distribute
S.execStateT . distribute
:: Monad m =>
Proxy a' a1 b' b (S.StateT s m) a -> s -> Proxy a' a1 b' b m s
. 예를 들어 연속 레이어의 각면에 파이프 레이어가있는 신중하게 정의 된 모나드 스택을 사용하면 을 정의 할 수 있습니다. 이는 연속 변압기에서 작동하며 MFunctor
이 아닙니다.
관련 문제
- 1. 다음과 같은 배열을 갖는 PHP
- 2. 나는 다음과 같은 한 상태
- 3. 는 다음과 같은 유형
- 4. 는 다음과 같은 모델
- 5. 는 다음과 같은 구조로
- 6. 는 다음과 같은 활동
- 7. 는 다음과 같은 전설에서
- 8. 는 다음과 같은 목적
- 9. 는 다음과 같은 읽는시나
- 10. 는 다음과 같은 파일이
- 11. 내가자는 다음과 같은 구조를 갖는 XML을 SimpleXML을
- 12. 레일 : 설정 파일은 다음과 같은 형태를 갖는
- 13. RSpec에/FactoryGirl 문서는 다음과 같은 공장을 갖는
- 14. 파이프 상태
- 15. 는 다음과 같은 오라클 DB를
- 16. 는 다음과 같은 데이터베이스 연결
- 17. 는 다음과 같은 문법이 모호
- 18. Cloudfoundry URL (smile-spring.coludfoundry.com) 다음과 같은 상태
- 19. Google 웹 로그 분석은 다음과 같은 시나리오를 갖는 프로
- 20. 나는 다음과 같은 구조를 갖는 XML 파일이 Python과 lxml이
- 21. 해시를 갖는, 같은 해시 맵을 갖는 루비
- 22. 는 스크롤 I는 다음과 같이 볼 구조를 갖는 뷰 컨트롤러가
- 23. 파이프 교착 상태 쓰기 프로그램
- 24. 는 TableLayout을 문제를 갖는
- 25. 는 SQL - 그룹화 갖는
- 26. 다음과 같은 특성을 가진 교실을 나타내는 데이터의 집합을 갖는 데이터
- 27. 갖는 문제에 가입하고 외부는 I는 다음과 같은 모델 (간체) 한
- 28. 다음과 같은 구조를 갖는 안드로이드에서 json 배열을 파싱하는 방법은 무엇입니까?
- 29. 장고 I는 다음과 같은 특성을 갖는 함수를 작성한 기능
- 30. 나는 다음과 같은 두 가지 클래스를 갖는 자바의 모든 클래스에서
좋아요! 실제로는 [execStateP' 기능] (http://hackage.haskell.org/package/pipes-4.1.2/docs/Pipes-Lift.html#v:execStateP)이 있습니다. 감사! –
아,'execStateP'에 대해 깜빡했습니다. 그렇다면 더 간단합니다. – danidiaz