{-# LANGUAGE FlexibleContexts #-}

module Control.Monad.Sharing.Lazy (

  Lazy, runLazy, evalLazy,

  module Control.Monad,
  module Control.Monad.Sharing

 ) where

import Control.Monad
import Control.Monad.Sharing
import Control.Monad.Sharing.Lazy.ContReaderNoThunksInlined

evalLazy :: Monad m => Nondet (Lazy m) a => Lazy m a -> m a
evalLazy m = runLazy (m >>= eval)