Arrow을 만드는 방법 Free과 MonadFree을 만드는 방법은 무엇입니까? class (Functor f, Monad m) => MonadFree f m where ...
data Free f a = Impure (f (Free f a)) | Pure a
MonadFree 2 개 매개 변수 m 및 f 포함되어 있지만 f을 삽입 할 공간을 Kl
무료 모나드를 사용하는 ETL 프로세스에 간단한 언어를 구현했습니다. 데이터 가져 오기 및 저장 모두에 대해 입력 및 출력으로 List을 사용하면 모든 것이 잘 동작합니다. 그러나 예상대로 나는 Future[List] case class Fetch(offset: Int, amount: Int) extends Ops[Future[List[Record]]]
Free Monads를 사용하여 작은 DSL을 작성합니다. 내 DSL에서 다형 함수를 사용하고 싶습니다. 내가 구축하고 싶은 무언가의 예는 이것이다 : {-# LANGUAGE TemplateHaskell #-}
import Control.Monad.Free.Church
data Queue a = Queue a
data MyDsl next =
난 ANDY에 매핑 된 >>= 및 mplus이 매핑 된 Prolog와 같은 AND/OR 의사 결정 트리를 구성하기 위해 EDSL을 생성하기 위해 무료 모나드를 사용하려고합니다. 내가 A AND (B OR C) AND (D OR E) 같은 것을 설명 할 수 있기를 원하지만, 이것을 distributivity로 바꾸어 (A AND B AND D) OR (A A
무료 프록시 트랜스 포머가 가능하다고 생각하십니까? 뭔가 같은 것 data FreePT f p a' a b' b m r = ....
instance (Proxy p,Functor f) => Proxy (FreePT f p) where
....
instance (Functor f) => ProxyTrans (FreePT f) where
다음 코드는 논문 (R. O. Bjarnason, 무료 모나드가있는 스택리스 스칼라)에서 수정되었습니다. 이 논문의 제목은 제안 된 데이터 구조의 목적을 총체적으로 - 즉, 일정한 스택 공간에서 재귀 적 처리를 허용하고 사용자가 명확한 방식으로 재귀를 표현할 수 있도록하는 것을 가리킨다. 필자의 목표는 오름차순 상수 스택 공간에서 간단한 패턴 일치를 기반으
다른 컨텍스트에서 다른 작업을위한 두 개의 무료 모나드가 있습니다. 그러나 한 (major) DSL은 특정 작업이 컨텍스트에있는 경우 다른 (action)를 포함해야합니다 : 문제가 import Control.Monad.Free
data ActionFunctor next = Wait Timeout next
| Read URI next
블로그 사이트에 RSS/Atom 피드를 생성해야한다고 가정합니다. "Feed Monad Interpreter"에 대해 생각하고 있습니다. pattern. 즉, 프리미티브 Blog 및 BlogPost, Free monad (이 프리미티브의 트리) 및 Free monad 트리를 XML로 변환하는 RSS/Atom "interpeters"가있는 DSL을 정의합니다
okaml에서 무료 monad 라이브러리를 작성하려고합니다. 다음은 haskell에서 Control.Monad.Free 다음이지만 hoistFree의 구현에서 한 지점에서 멈추었습니다. hoistFree :: Functor g => (forall a. f a -> g a) -> Free f b -> Free g b
hoistFree _ (Pure a) =
FreeT/ProgramT로 만든 모나드 변환기에 대해 mtl과 같은 메커니즘이있을 수 있습니까? 역사에 대한 나의 이해는 다음과 같습니다. 옛날 옛적에 모나드 변압기가 발명되었습니다. 그런 다음 사람들은 모나드 변압기를 서로 겹쳐 쌓기 시작하여 lift을 삽입하는 것이 짜증이났다. 그런 다음 몇 명의 사람들이 모나드 클래스를 발명했습니다. ask :: m