{-# OPTIONS -cpp #-} {-# LANGUAGE RankNTypes, ScopedTypeVariables, MultiParamTypeClasses, FlexibleInstances, TypeSynonymInstances #-} module Curry.Module.Meta (module Curry.Module.Meta) where import Curry.RunTimeSystem import Curry.Module.Prelude -- begin included import System.Mem.Weak ( addFinalizer ) import Control.Concurrent import System.IO.Unsafe ( unsafeInterleaveIO ) import Debug.Trace ( trace ) import Data.List data C_OrRef = C_OrRef OrRef | C_OrRefFail Curry.RunTimeSystem.C_Exceptions | C_OrRefOr Curry.RunTimeSystem.OrRef (Curry.RunTimeSystem.Branches C_OrRef) instance BaseCurry C_OrRef where nf f x state = f(x)(state) gnf f x state = f(x)(state) generator _ = error "free Variable of type OrRef" failed = C_OrRefFail branching = C_OrRefOr consKind (C_OrRefOr _ _) = Curry.RunTimeSystem.Branching consKind (C_OrRefFail _) = Curry.RunTimeSystem.Failed consKind _ = Curry.RunTimeSystem.Val exceptions (C_OrRefFail x) = x orRef (C_OrRefOr x _) = x branches (C_OrRefOr _ x) = x instance Curry C_OrRef where strEq (C_OrRef x1) (C_OrRef y1) _ = if x1 Prelude.== y1 then strEqSuccess else strEqFail "OrRef" strEq x0 _ _ = Curry.Module.Prelude.strEqFail(Curry.Module.Prelude.typeName(x0)) eq (C_OrRef x1) (C_OrRef y1) _ = if x1 Prelude.== y1 then C_True else C_False eq _ _ _ = C_False typeName _ = "OrRef" propagate _ o _ = o foldCurry _ c _ _ = c showQ d (C_OrRef x1) = showParen (d>10) (showString "Unsafe.OrRef" . showsPrec d x1) instance Show C_OrRef where showsPrec d (C_OrRef x1) = showParen (d>10) (showString "OrRef" . showsPrec d x1) instance Read C_OrRef where readsPrec d r = [ (C_OrRef ref,s) | (ref,s) <- readsPrec d r] --------------------------------------------------------------------------------- -- test for free variable --------------------------------------------------------------------------------- prim_isFree :: (Curry t0) => t0 -> Result (C_IO (C_Either t0 t0)) prim_isFree x _ = C_IO (\ _ -> case consKind x of Branching -> Prelude.return (IOVal (if isGenerator (orRef x) then C_Left x else C_Right x)) _ -> Prelude.return (IOVal (C_Right x))) --------------------------------------------------------------------------------- -- various normal forms in io monad --------------------------------------------------------------------------------- -- yield head normal form with current state -- (including fetching and looking up variable bindings) -- then apply continuation on it and make sure that you got a value -- of type io before finally executing that action. headNormalFormIO :: (Curry a,Curry b) => Prim (a -> Result (C_IO b)) -> a -> Result (C_IO b) headNormalFormIO cont x _ = C_IO (hnfCTC (\ x' st -> hnfCTC exec2 (apply cont x' st) st) x) searchTree :: Curry a => a -> Result (C_SearchTree a) searchTree = searchTr hnfIO x _ = C_IO (hnfCTC (\ x _ -> Prelude.return (IOVal x)) x) nfIO x _ = C_IO (nfCTC (\ x _ -> Prelude.return (IOVal x)) x) gnfIO x _ = C_IO (ghnfCTC (\ x _ -> Prelude.return (IOVal x)) x) ghnfIO x _ = C_IO (ghnfCTC (\ x _ -> Prelude.return (IOVal x)) x) --------------------------------------------------------------------------------- -- rich search trees --------------------------------------------------------------------------------- getRichSearchTree :: Curry a => a -> Result (C_IO (C_RichSearchTree a)) getRichSearchTree x _ = C_IO (\ state -> Prelude.return (IOVal (richSearchTr x state))) richSearchTree :: Curry a => a -> Result (C_RichSearchTree a) richSearchTree = richSearchTr --inject :: Curry a => C_Context -> a -> C_RichSearchTree a --inject (Context c) = richSearchTr c richSearchTr :: Curry a => a -> Result (C_RichSearchTree a) richSearchTr x state = transVal (nfCTC (nfCTC (\ x _ -> x)) x state) where transVal x = case consKind x of Val -> C_RichValue x Failed -> C_RichFail (toCurry (exceptions x)) Branching -> transBranching (orRef x) (branches x) transBranching _ [] = C_RichFail (C_ErrorCall List) transBranching _ [x] = transVal x transBranching r xs@(_:_:_) = C_RichChoice (C_OrRef r) (fromHaskellList (map transVal xs)) instance ConvertCH C_Exception Exception where toCurry (ErrorCall s) = C_ErrorCall (toCurry s) toCurry (PatternMatchFail s) = C_PatternMatchFail (toCurry s) toCurry (AssertionFailed s) = C_AssertionFailed (toCurry s) toCurry (IOException s) = C_IOException (toCurry s) toCurry PreludeFailed = C_PreludeFailed fromCurry (C_ErrorCall s) = ErrorCall (fromCurry s) fromCurry (C_PatternMatchFail s) = PatternMatchFail (fromCurry s) fromCurry (C_AssertionFailed s) = AssertionFailed (fromCurry s) fromCurry (C_IOException s) = IOException (fromCurry s) fromCurry C_PreludeFailed = PreludeFailed --------------------------------------------------------------------------------- -- parallel search --------------------------------------------------------------------------------- parallelSearch :: Curry a => a -> Result (C_IO (List a)) parallelSearch v _ = C_IO (\state -> do chan <- newChan mvar <- newEmptyMVar qsem <- newMyQSem 0 tid <- forkIO (searchThread qsem mvar chan (nfCTC (nfCTC (\ x _ -> x)) v state)) putMVar mvar [tid] --addFinalizer res (stopSearch mvar2) res <- myGetChanContents qsem chan Prelude.return (IOVal (fromHaskellList res))) myGetChanContents :: Show a => MyQSem -> Chan (Maybe a) -> IO [a] myGetChanContents qsem chan = unsafeInterleaveIO ( do decMyQSem qsem x <- readChan chan case x of Nothing -> Prelude.return [] Just y -> do xs <- myGetChanContents qsem chan Prelude.return (y:xs) ) stopSearch :: MVar [ThreadId] -> IO () stopSearch mvar = do print "start" ids <- takeMVar mvar mapM_ killThread ids --putMVar mvar [] removeId :: MVar [ThreadId] -> Chan (Maybe a) -> ThreadId -> IO () removeId mvar chan tid = do ids <- takeMVar mvar let newids = delete tid ids case newids of [] -> writeChan chan Nothing -- >> putMVar mvar [] _ -> putMVar mvar newids searchThread :: Curry a => MyQSem -> MVar [ThreadId] -> Chan (Maybe a) -> a -> IO () searchThread qsem mvar chan x = do case consKind x of Val -> incMyQSem qsem >> writeChan chan (Just x) >> terminate Failed -> terminate Branching -> do --yield testMyQSem qsem let b:bs = branches x -- to prevent the threads from terminating till their Ids are registered ids <- takeMVar mvar newIds <- mapM (forkIO . searchThread qsem mvar chan) bs putMVar mvar (newIds++ids) searchThread qsem mvar chan b where noThreads = do ids <- takeMVar mvar putStrLn ("noThreads: " ++ show (length ids)) putMVar mvar ids terminate = do tid <- myThreadId removeId mvar chan tid newtype MyQSem = MyQSem (MVar (Int, [MVar ()])) -- |Build a new 'MyQSem' newMyQSem :: Int -> IO MyQSem newMyQSem init = do sem <- newMVar (init,[]) Prelude.return (MyQSem sem) -- |Wait for a unit to become available incMyQSem :: MyQSem -> IO () incMyQSem (MyQSem sem) = do (avail,blocked) <- takeMVar sem putMVar sem (avail+1,blocked) -- |Signal that a unit of the 'MyQSem' is available decMyQSem :: MyQSem -> IO () decMyQSem (MyQSem sem) = do (avail,blocked) <- takeMVar sem if avail>0 then putMVar sem (avail-1,blocked) else mapM_ (flip putMVar ()) blocked >> putMVar sem (avail-1,[]) testMyQSem :: MyQSem -> IO () testMyQSem (MyQSem sem) = do x@(avail,blocked) <- takeMVar sem if avail<0 then putMVar sem x else do block <- newEmptyMVar putMVar sem (avail,block:blocked) takeMVar block ------------------------------- -- covering non-determinism ------------------------------- cover :: Curry a => a -> Result a cover x st = case consKind x of Branching -> branching (Curry.RunTimeSystem.cover (orRef x)) (map (flip Curry.Module.Meta.cover st) (branches x)) _ -> x ----------------------------------- -- encapsulate to head normal form ----------------------------------- st :: Curry a => a -> Result (C_SearchTree a) st x s = transVal (hnfCTC (\ x _ -> x) x s) where transVal x = case consKind x of Val -> C_Value x Failed -> C_Fail Branching -> let ref = orRef x in if isCovered ref then C_SearchTreeOr (uncover ref) (map (flip st s) (branches x)) else C_Choice (fromHaskellList (map transVal (branches x))) ----------------------------------- -- encapsulate to head normal form ----------------------------------- richST :: Curry a => a -> Result (C_RichSearchTree a) richST x s = transVal (hnfCTC (\ x _ -> x) x s) where transVal x = case consKind x of Val -> C_RichValue x Failed -> C_RichFail (toCurry (exceptions x)) Branching -> let ref = orRef x in if isCovered ref then C_RichSearchTreeOr (uncover ref) (map (flip richST s) (branches x)) else C_RichChoice (C_OrRef (orRef x)) (fromHaskellList (map transVal (branches x))) ----------------------------- -- the general question mark ----------------------------- ors :: Curry a => List a -> Result a ors xs _ = branching (error "Unsafe.ors") (toHaskellList xs) -- temporarily added prim_throw :: Curry a => C_Exception -> Result a prim_throw e _ = Curry.RunTimeSystem.failed (fromCurry e) -- end included data C_RichSearchTree t0 = C_RichFail Curry.Module.Meta.C_Exception | C_RichValue t0 | C_RichChoice Curry.Module.Meta.C_OrRef (Curry.Module.Prelude.List (Curry.Module.Meta.C_RichSearchTree t0)) | C_RichSuspend | C_RichSearchTreeFail Curry.RunTimeSystem.C_Exceptions | C_RichSearchTreeOr Curry.RunTimeSystem.OrRef (Curry.RunTimeSystem.Branches (Curry.Module.Meta.C_RichSearchTree t0)) data C_Exception = C_ErrorCall (Curry.Module.Prelude.List Curry.Module.Prelude.C_Char) | C_PatternMatchFail (Curry.Module.Prelude.List Curry.Module.Prelude.C_Char) | C_AssertionFailed (Curry.Module.Prelude.List Curry.Module.Prelude.C_Char) | C_IOException (Curry.Module.Prelude.List Curry.Module.Prelude.C_Char) | C_PreludeFailed | C_ExceptionFail Curry.RunTimeSystem.C_Exceptions | C_ExceptionOr Curry.RunTimeSystem.OrRef (Curry.RunTimeSystem.Branches Curry.Module.Meta.C_Exception) data C_Seq t0 = C_Nil | C_Cons t0 (Curry.Module.Meta.C_Seq t0) | C_Continued (Curry.Module.Meta.C_Seq t0) | C_SeqFail Curry.RunTimeSystem.C_Exceptions | C_SeqOr Curry.RunTimeSystem.OrRef (Curry.RunTimeSystem.Branches (Curry.Module.Meta.C_Seq t0)) instance (BaseCurry t0) => BaseCurry (Curry.Module.Meta.C_RichSearchTree t0) where nf f (Curry.Module.Meta.C_RichFail x1) state0 = Curry.RunTimeSystem.nfCTC(\ v1 state1 -> f(Curry.Module.Meta.C_RichFail(v1))(state1))(x1)(state0) nf f (Curry.Module.Meta.C_RichValue x1) state0 = Curry.RunTimeSystem.nfCTC(\ v1 state1 -> f(Curry.Module.Meta.C_RichValue(v1))(state1))(x1)(state0) nf f (Curry.Module.Meta.C_RichChoice x1 x2) state0 = Curry.RunTimeSystem.nfCTC(\ v1 state1 -> Curry.RunTimeSystem.nfCTC(\ v2 state2 -> f(Curry.Module.Meta.C_RichChoice(v1)(v2))(state2))(x2)(state1))(x1)(state0) nf f x st = f(x)(st) gnf f (Curry.Module.Meta.C_RichFail x1) state0 = Curry.RunTimeSystem.gnfCTC(\ v1 state1 -> f(Curry.Module.Meta.C_RichFail(v1))(state1))(x1)(state0) gnf f (Curry.Module.Meta.C_RichValue x1) state0 = Curry.RunTimeSystem.gnfCTC(\ v1 state1 -> f(Curry.Module.Meta.C_RichValue(v1))(state1))(x1)(state0) gnf f (Curry.Module.Meta.C_RichChoice x1 x2) state0 = Curry.RunTimeSystem.gnfCTC(\ v1 state1 -> Curry.RunTimeSystem.gnfCTC(\ v2 state2 -> f(Curry.Module.Meta.C_RichChoice(v1)(v2))(state2))(x2)(state1))(x1)(state0) gnf f x st = f(x)(st) generator i = Curry.RunTimeSystem.withRef(\ r -> Curry.Module.Meta.C_RichSearchTreeOr(Curry.RunTimeSystem.mkRef(r)(2)(i))([Curry.Module.Meta.C_RichFail(Curry.RunTimeSystem.generator((Prelude.+)(r)((0::Int)))),Curry.Module.Meta.C_RichValue(Curry.RunTimeSystem.generator((Prelude.+)(r)((0::Int)))),Curry.Module.Meta.C_RichChoice(Curry.RunTimeSystem.generator((Prelude.+)(r)((1::Int))))(Curry.RunTimeSystem.generator((Prelude.+)(r)((0::Int)))),Curry.Module.Meta.C_RichSuspend]))(2) failed = Curry.Module.Meta.C_RichSearchTreeFail branching = Curry.Module.Meta.C_RichSearchTreeOr consKind (Curry.Module.Meta.C_RichSearchTreeOr _ _) = Curry.RunTimeSystem.Branching consKind (Curry.Module.Meta.C_RichSearchTreeFail _) = Curry.RunTimeSystem.Failed consKind _ = Curry.RunTimeSystem.Val exceptions (Curry.Module.Meta.C_RichSearchTreeFail x) = x orRef (Curry.Module.Meta.C_RichSearchTreeOr x _) = x branches (Curry.Module.Meta.C_RichSearchTreeOr _ x) = x instance BaseCurry Curry.Module.Meta.C_Exception where nf f (Curry.Module.Meta.C_ErrorCall x1) state0 = Curry.RunTimeSystem.nfCTC(\ v1 state1 -> f(Curry.Module.Meta.C_ErrorCall(v1))(state1))(x1)(state0) nf f (Curry.Module.Meta.C_PatternMatchFail x1) state0 = Curry.RunTimeSystem.nfCTC(\ v1 state1 -> f(Curry.Module.Meta.C_PatternMatchFail(v1))(state1))(x1)(state0) nf f (Curry.Module.Meta.C_AssertionFailed x1) state0 = Curry.RunTimeSystem.nfCTC(\ v1 state1 -> f(Curry.Module.Meta.C_AssertionFailed(v1))(state1))(x1)(state0) nf f (Curry.Module.Meta.C_IOException x1) state0 = Curry.RunTimeSystem.nfCTC(\ v1 state1 -> f(Curry.Module.Meta.C_IOException(v1))(state1))(x1)(state0) nf f x st = f(x)(st) gnf f (Curry.Module.Meta.C_ErrorCall x1) state0 = Curry.RunTimeSystem.gnfCTC(\ v1 state1 -> f(Curry.Module.Meta.C_ErrorCall(v1))(state1))(x1)(state0) gnf f (Curry.Module.Meta.C_PatternMatchFail x1) state0 = Curry.RunTimeSystem.gnfCTC(\ v1 state1 -> f(Curry.Module.Meta.C_PatternMatchFail(v1))(state1))(x1)(state0) gnf f (Curry.Module.Meta.C_AssertionFailed x1) state0 = Curry.RunTimeSystem.gnfCTC(\ v1 state1 -> f(Curry.Module.Meta.C_AssertionFailed(v1))(state1))(x1)(state0) gnf f (Curry.Module.Meta.C_IOException x1) state0 = Curry.RunTimeSystem.gnfCTC(\ v1 state1 -> f(Curry.Module.Meta.C_IOException(v1))(state1))(x1)(state0) gnf f x st = f(x)(st) generator i = Curry.RunTimeSystem.withRef(\ r -> Curry.Module.Meta.C_ExceptionOr(Curry.RunTimeSystem.mkRef(r)(1)(i))([Curry.Module.Meta.C_ErrorCall(Curry.RunTimeSystem.generator((Prelude.+)(r)((0::Int)))),Curry.Module.Meta.C_PatternMatchFail(Curry.RunTimeSystem.generator((Prelude.+)(r)((0::Int)))),Curry.Module.Meta.C_AssertionFailed(Curry.RunTimeSystem.generator((Prelude.+)(r)((0::Int)))),Curry.Module.Meta.C_IOException(Curry.RunTimeSystem.generator((Prelude.+)(r)((0::Int)))),Curry.Module.Meta.C_PreludeFailed]))(1) failed = Curry.Module.Meta.C_ExceptionFail branching = Curry.Module.Meta.C_ExceptionOr consKind (Curry.Module.Meta.C_ExceptionOr _ _) = Curry.RunTimeSystem.Branching consKind (Curry.Module.Meta.C_ExceptionFail _) = Curry.RunTimeSystem.Failed consKind _ = Curry.RunTimeSystem.Val exceptions (Curry.Module.Meta.C_ExceptionFail x) = x orRef (Curry.Module.Meta.C_ExceptionOr x _) = x branches (Curry.Module.Meta.C_ExceptionOr _ x) = x instance (BaseCurry t0) => BaseCurry (Curry.Module.Meta.C_Seq t0) where nf f (Curry.Module.Meta.C_Cons x1 x2) state0 = Curry.RunTimeSystem.nfCTC(\ v1 state1 -> Curry.RunTimeSystem.nfCTC(\ v2 state2 -> f(Curry.Module.Meta.C_Cons(v1)(v2))(state2))(x2)(state1))(x1)(state0) nf f (Curry.Module.Meta.C_Continued x1) state0 = Curry.RunTimeSystem.nfCTC(\ v1 state1 -> f(Curry.Module.Meta.C_Continued(v1))(state1))(x1)(state0) nf f x st = f(x)(st) gnf f (Curry.Module.Meta.C_Cons x1 x2) state0 = Curry.RunTimeSystem.gnfCTC(\ v1 state1 -> Curry.RunTimeSystem.gnfCTC(\ v2 state2 -> f(Curry.Module.Meta.C_Cons(v1)(v2))(state2))(x2)(state1))(x1)(state0) gnf f (Curry.Module.Meta.C_Continued x1) state0 = Curry.RunTimeSystem.gnfCTC(\ v1 state1 -> f(Curry.Module.Meta.C_Continued(v1))(state1))(x1)(state0) gnf f x st = f(x)(st) generator i = Curry.RunTimeSystem.withRef(\ r -> Curry.Module.Meta.C_SeqOr(Curry.RunTimeSystem.mkRef(r)(2)(i))([Curry.Module.Meta.C_Nil,Curry.Module.Meta.C_Cons(Curry.RunTimeSystem.generator((Prelude.+)(r)((1::Int))))(Curry.RunTimeSystem.generator((Prelude.+)(r)((0::Int)))),Curry.Module.Meta.C_Continued(Curry.RunTimeSystem.generator((Prelude.+)(r)((0::Int))))]))(2) failed = Curry.Module.Meta.C_SeqFail branching = Curry.Module.Meta.C_SeqOr consKind (Curry.Module.Meta.C_SeqOr _ _) = Curry.RunTimeSystem.Branching consKind (Curry.Module.Meta.C_SeqFail _) = Curry.RunTimeSystem.Failed consKind _ = Curry.RunTimeSystem.Val exceptions (Curry.Module.Meta.C_SeqFail x) = x orRef (Curry.Module.Meta.C_SeqOr x _) = x branches (Curry.Module.Meta.C_SeqOr _ x) = x instance (Curry t0) => Curry (Curry.Module.Meta.C_RichSearchTree t0) where strEq (Curry.Module.Meta.C_RichFail x1) (Curry.Module.Meta.C_RichFail y1) st = Curry.Module.Prelude.genStrEq(x1)(y1)(st) strEq (Curry.Module.Meta.C_RichValue x1) (Curry.Module.Meta.C_RichValue y1) st = Curry.Module.Prelude.genStrEq(x1)(y1)(st) strEq (Curry.Module.Meta.C_RichChoice x1 x2) (Curry.Module.Meta.C_RichChoice y1 y2) st = Curry.Module.Prelude.concAnd(Curry.Module.Prelude.genStrEq(x1)(y1)(st))(Curry.Module.Prelude.genStrEq(x2)(y2)(st))(st) strEq Curry.Module.Meta.C_RichSuspend Curry.Module.Meta.C_RichSuspend st = Curry.Module.Prelude.strEqSuccess strEq _ x0 _ = Curry.Module.Prelude.strEqFail(Curry.Module.Prelude.typeName(x0)) eq (Curry.Module.Meta.C_RichFail x1) (Curry.Module.Meta.C_RichFail y1) st = Curry.Module.Prelude.genEq(x1)(y1)(st) eq (Curry.Module.Meta.C_RichValue x1) (Curry.Module.Meta.C_RichValue y1) st = Curry.Module.Prelude.genEq(x1)(y1)(st) eq (Curry.Module.Meta.C_RichChoice x1 x2) (Curry.Module.Meta.C_RichChoice y1 y2) st = Curry.Module.Prelude.op_38_38(Curry.Module.Prelude.genEq(x1)(y1)(st))(Curry.Module.Prelude.genEq(x2)(y2)(st))(st) eq Curry.Module.Meta.C_RichSuspend Curry.Module.Meta.C_RichSuspend st = Curry.Module.Prelude.C_True eq _ _ _ = Curry.Module.Prelude.C_False propagate f (Curry.Module.Meta.C_RichFail x1) st = Curry.Module.Meta.C_RichFail(f((0::Int))(x1)(st)) propagate f (Curry.Module.Meta.C_RichValue x1) st = Curry.Module.Meta.C_RichValue(f((0::Int))(x1)(st)) propagate f (Curry.Module.Meta.C_RichChoice x1 x2) st = Curry.Module.Meta.C_RichChoice(f((0::Int))(x1)(st))(f((1::Int))(x2)(st)) propagate f Curry.Module.Meta.C_RichSuspend st = Curry.Module.Meta.C_RichSuspend foldCurry f c (Curry.Module.Meta.C_RichFail x1) st = f(x1)(c)(st) foldCurry f c (Curry.Module.Meta.C_RichValue x1) st = f(x1)(c)(st) foldCurry f c (Curry.Module.Meta.C_RichChoice x1 x2) st = f(x1)(f(x2)(c)(st))(st) foldCurry f c Curry.Module.Meta.C_RichSuspend st = c typeName _ = "RichSearchTree" showQ d (Curry.Module.Meta.C_RichFail x1) = Prelude.showParen(Prelude.True)(showStr) where showStr = (Prelude..)(Prelude.showString("Meta.RichFail "))(Curry.Module.Prelude.showQ(Curry.RunTimeSystem.eleven)(x1)) showQ d (Curry.Module.Meta.C_RichValue x1) = Prelude.showParen(Prelude.True)(showStr) where showStr = (Prelude..)(Prelude.showString("Meta.RichValue "))(Curry.Module.Prelude.showQ(Curry.RunTimeSystem.eleven)(x1)) showQ d (Curry.Module.Meta.C_RichChoice x1 x2) = Prelude.showParen(Prelude.True)(showStr) where showStr = (Prelude..)(Prelude.showString("Meta.RichChoice "))((Prelude..)(Curry.Module.Prelude.showQ(Curry.RunTimeSystem.eleven)(x1))((Prelude..)(Prelude.showChar(' '))(Curry.Module.Prelude.showQ(Curry.RunTimeSystem.eleven)(x2)))) showQ _ Curry.Module.Meta.C_RichSuspend = Prelude.showString("Meta.RichSuspend") showQ _ (Curry.Module.Meta.C_RichSearchTreeOr r _) = Prelude.showString((:)('_')(Prelude.show(Curry.RunTimeSystem.deref(r)))) instance Curry Curry.Module.Meta.C_Exception where strEq (Curry.Module.Meta.C_ErrorCall x1) (Curry.Module.Meta.C_ErrorCall y1) st = Curry.Module.Prelude.genStrEq(x1)(y1)(st) strEq (Curry.Module.Meta.C_PatternMatchFail x1) (Curry.Module.Meta.C_PatternMatchFail y1) st = Curry.Module.Prelude.genStrEq(x1)(y1)(st) strEq (Curry.Module.Meta.C_AssertionFailed x1) (Curry.Module.Meta.C_AssertionFailed y1) st = Curry.Module.Prelude.genStrEq(x1)(y1)(st) strEq (Curry.Module.Meta.C_IOException x1) (Curry.Module.Meta.C_IOException y1) st = Curry.Module.Prelude.genStrEq(x1)(y1)(st) strEq Curry.Module.Meta.C_PreludeFailed Curry.Module.Meta.C_PreludeFailed st = Curry.Module.Prelude.strEqSuccess strEq _ x0 _ = Curry.Module.Prelude.strEqFail(Curry.Module.Prelude.typeName(x0)) eq (Curry.Module.Meta.C_ErrorCall x1) (Curry.Module.Meta.C_ErrorCall y1) st = Curry.Module.Prelude.genEq(x1)(y1)(st) eq (Curry.Module.Meta.C_PatternMatchFail x1) (Curry.Module.Meta.C_PatternMatchFail y1) st = Curry.Module.Prelude.genEq(x1)(y1)(st) eq (Curry.Module.Meta.C_AssertionFailed x1) (Curry.Module.Meta.C_AssertionFailed y1) st = Curry.Module.Prelude.genEq(x1)(y1)(st) eq (Curry.Module.Meta.C_IOException x1) (Curry.Module.Meta.C_IOException y1) st = Curry.Module.Prelude.genEq(x1)(y1)(st) eq Curry.Module.Meta.C_PreludeFailed Curry.Module.Meta.C_PreludeFailed st = Curry.Module.Prelude.C_True eq _ _ _ = Curry.Module.Prelude.C_False propagate f (Curry.Module.Meta.C_ErrorCall x1) st = Curry.Module.Meta.C_ErrorCall(f((0::Int))(x1)(st)) propagate f (Curry.Module.Meta.C_PatternMatchFail x1) st = Curry.Module.Meta.C_PatternMatchFail(f((0::Int))(x1)(st)) propagate f (Curry.Module.Meta.C_AssertionFailed x1) st = Curry.Module.Meta.C_AssertionFailed(f((0::Int))(x1)(st)) propagate f (Curry.Module.Meta.C_IOException x1) st = Curry.Module.Meta.C_IOException(f((0::Int))(x1)(st)) propagate f Curry.Module.Meta.C_PreludeFailed st = Curry.Module.Meta.C_PreludeFailed foldCurry f c (Curry.Module.Meta.C_ErrorCall x1) st = f(x1)(c)(st) foldCurry f c (Curry.Module.Meta.C_PatternMatchFail x1) st = f(x1)(c)(st) foldCurry f c (Curry.Module.Meta.C_AssertionFailed x1) st = f(x1)(c)(st) foldCurry f c (Curry.Module.Meta.C_IOException x1) st = f(x1)(c)(st) foldCurry f c Curry.Module.Meta.C_PreludeFailed st = c typeName _ = "Exception" showQ d (Curry.Module.Meta.C_ErrorCall x1) = Prelude.showParen(Prelude.True)(showStr) where showStr = (Prelude..)(Prelude.showString("Meta.ErrorCall "))(Curry.Module.Prelude.showQ(Curry.RunTimeSystem.eleven)(x1)) showQ d (Curry.Module.Meta.C_PatternMatchFail x1) = Prelude.showParen(Prelude.True)(showStr) where showStr = (Prelude..)(Prelude.showString("Meta.PatternMatchFail "))(Curry.Module.Prelude.showQ(Curry.RunTimeSystem.eleven)(x1)) showQ d (Curry.Module.Meta.C_AssertionFailed x1) = Prelude.showParen(Prelude.True)(showStr) where showStr = (Prelude..)(Prelude.showString("Meta.AssertionFailed "))(Curry.Module.Prelude.showQ(Curry.RunTimeSystem.eleven)(x1)) showQ d (Curry.Module.Meta.C_IOException x1) = Prelude.showParen(Prelude.True)(showStr) where showStr = (Prelude..)(Prelude.showString("Meta.IOException "))(Curry.Module.Prelude.showQ(Curry.RunTimeSystem.eleven)(x1)) showQ _ Curry.Module.Meta.C_PreludeFailed = Prelude.showString("Meta.PreludeFailed") showQ _ (Curry.Module.Meta.C_ExceptionOr r _) = Prelude.showString((:)('_')(Prelude.show(Curry.RunTimeSystem.deref(r)))) instance (Curry t0) => Curry (Curry.Module.Meta.C_Seq t0) where strEq Curry.Module.Meta.C_Nil Curry.Module.Meta.C_Nil st = Curry.Module.Prelude.strEqSuccess strEq (Curry.Module.Meta.C_Cons x1 x2) (Curry.Module.Meta.C_Cons y1 y2) st = Curry.Module.Prelude.concAnd(Curry.Module.Prelude.genStrEq(x1)(y1)(st))(Curry.Module.Prelude.genStrEq(x2)(y2)(st))(st) strEq (Curry.Module.Meta.C_Continued x1) (Curry.Module.Meta.C_Continued y1) st = Curry.Module.Prelude.genStrEq(x1)(y1)(st) strEq _ x0 _ = Curry.Module.Prelude.strEqFail(Curry.Module.Prelude.typeName(x0)) eq Curry.Module.Meta.C_Nil Curry.Module.Meta.C_Nil st = Curry.Module.Prelude.C_True eq (Curry.Module.Meta.C_Cons x1 x2) (Curry.Module.Meta.C_Cons y1 y2) st = Curry.Module.Prelude.op_38_38(Curry.Module.Prelude.genEq(x1)(y1)(st))(Curry.Module.Prelude.genEq(x2)(y2)(st))(st) eq (Curry.Module.Meta.C_Continued x1) (Curry.Module.Meta.C_Continued y1) st = Curry.Module.Prelude.genEq(x1)(y1)(st) eq _ _ _ = Curry.Module.Prelude.C_False propagate f Curry.Module.Meta.C_Nil st = Curry.Module.Meta.C_Nil propagate f (Curry.Module.Meta.C_Cons x1 x2) st = Curry.Module.Meta.C_Cons(f((0::Int))(x1)(st))(f((1::Int))(x2)(st)) propagate f (Curry.Module.Meta.C_Continued x1) st = Curry.Module.Meta.C_Continued(f((0::Int))(x1)(st)) foldCurry f c Curry.Module.Meta.C_Nil st = c foldCurry f c (Curry.Module.Meta.C_Cons x1 x2) st = f(x1)(f(x2)(c)(st))(st) foldCurry f c (Curry.Module.Meta.C_Continued x1) st = f(x1)(c)(st) typeName _ = "Seq" showQ _ Curry.Module.Meta.C_Nil = Prelude.showString("Meta.Nil") showQ d (Curry.Module.Meta.C_Cons x1 x2) = Prelude.showParen(Prelude.True)(showStr) where showStr = (Prelude..)(Prelude.showString("Meta.Cons "))((Prelude..)(Curry.Module.Prelude.showQ(Curry.RunTimeSystem.eleven)(x1))((Prelude..)(Prelude.showChar(' '))(Curry.Module.Prelude.showQ(Curry.RunTimeSystem.eleven)(x2)))) showQ d (Curry.Module.Meta.C_Continued x1) = Prelude.showParen(Prelude.True)(showStr) where showStr = (Prelude..)(Prelude.showString("Meta.Continued "))(Curry.Module.Prelude.showQ(Curry.RunTimeSystem.eleven)(x1)) showQ _ (Curry.Module.Meta.C_SeqOr r _) = Prelude.showString((:)('_')(Prelude.show(Curry.RunTimeSystem.deref(r)))) instance (Show t0) => Show (Curry.Module.Meta.C_RichSearchTree t0) where showsPrec d (Curry.Module.Meta.C_RichFail x1) = Prelude.showParen((Prelude.>)(d)(Curry.RunTimeSystem.ten))(showStr) where showStr = (Prelude..)(Prelude.showString("RichFail "))(Prelude.showsPrec(Curry.RunTimeSystem.eleven)(x1)) showsPrec d (Curry.Module.Meta.C_RichValue x1) = Prelude.showParen((Prelude.>)(d)(Curry.RunTimeSystem.ten))(showStr) where showStr = (Prelude..)(Prelude.showString("RichValue "))(Prelude.showsPrec(Curry.RunTimeSystem.eleven)(x1)) showsPrec d (Curry.Module.Meta.C_RichChoice x1 x2) = Prelude.showParen((Prelude.>)(d)(Curry.RunTimeSystem.ten))(showStr) where showStr = (Prelude..)(Prelude.showString("RichChoice "))((Prelude..)(Prelude.showsPrec(Curry.RunTimeSystem.eleven)(x1))((Prelude..)(Prelude.showChar(' '))(Prelude.showsPrec(Curry.RunTimeSystem.eleven)(x2)))) showsPrec _ Curry.Module.Meta.C_RichSuspend = Prelude.showString("RichSuspend") showsPrec _ (Curry.Module.Meta.C_RichSearchTreeOr r _) = Prelude.showString((:)('_')(Prelude.show(Curry.RunTimeSystem.deref(r)))) instance Show Curry.Module.Meta.C_Exception where showsPrec d (Curry.Module.Meta.C_ErrorCall x1) = Prelude.showParen((Prelude.>)(d)(Curry.RunTimeSystem.ten))(showStr) where showStr = (Prelude..)(Prelude.showString("ErrorCall "))(Prelude.showsPrec(Curry.RunTimeSystem.eleven)(x1)) showsPrec d (Curry.Module.Meta.C_PatternMatchFail x1) = Prelude.showParen((Prelude.>)(d)(Curry.RunTimeSystem.ten))(showStr) where showStr = (Prelude..)(Prelude.showString("PatternMatchFail "))(Prelude.showsPrec(Curry.RunTimeSystem.eleven)(x1)) showsPrec d (Curry.Module.Meta.C_AssertionFailed x1) = Prelude.showParen((Prelude.>)(d)(Curry.RunTimeSystem.ten))(showStr) where showStr = (Prelude..)(Prelude.showString("AssertionFailed "))(Prelude.showsPrec(Curry.RunTimeSystem.eleven)(x1)) showsPrec d (Curry.Module.Meta.C_IOException x1) = Prelude.showParen((Prelude.>)(d)(Curry.RunTimeSystem.ten))(showStr) where showStr = (Prelude..)(Prelude.showString("IOException "))(Prelude.showsPrec(Curry.RunTimeSystem.eleven)(x1)) showsPrec _ Curry.Module.Meta.C_PreludeFailed = Prelude.showString("PreludeFailed") showsPrec _ (Curry.Module.Meta.C_ExceptionOr r _) = Prelude.showString((:)('_')(Prelude.show(Curry.RunTimeSystem.deref(r)))) instance (Show t0) => Show (Curry.Module.Meta.C_Seq t0) where showsPrec _ Curry.Module.Meta.C_Nil = Prelude.showString("Nil") showsPrec d (Curry.Module.Meta.C_Cons x1 x2) = Prelude.showParen((Prelude.>)(d)(Curry.RunTimeSystem.ten))(showStr) where showStr = (Prelude..)(Prelude.showString("Cons "))((Prelude..)(Prelude.showsPrec(Curry.RunTimeSystem.eleven)(x1))((Prelude..)(Prelude.showChar(' '))(Prelude.showsPrec(Curry.RunTimeSystem.eleven)(x2)))) showsPrec d (Curry.Module.Meta.C_Continued x1) = Prelude.showParen((Prelude.>)(d)(Curry.RunTimeSystem.ten))(showStr) where showStr = (Prelude..)(Prelude.showString("Continued "))(Prelude.showsPrec(Curry.RunTimeSystem.eleven)(x1)) showsPrec _ (Curry.Module.Meta.C_SeqOr r _) = Prelude.showString((:)('_')(Prelude.show(Curry.RunTimeSystem.deref(r)))) instance (Read t0) => Read (Curry.Module.Meta.C_RichSearchTree t0) where readsPrec d r = (Prelude.++)(Prelude.readParen((Prelude.>)(d)(Curry.RunTimeSystem.ten))(\ r -> [(,)(Curry.Module.Meta.C_RichFail(x1))(r1) | ((,) _ r0) <- Curry.RunTimeSystem.readQualified("Meta")("RichFail")(r), ((,) x1 r1) <- Prelude.readsPrec(Curry.RunTimeSystem.eleven)(r0)])(r))((Prelude.++)(Prelude.readParen((Prelude.>)(d)(Curry.RunTimeSystem.ten))(\ r -> [(,)(Curry.Module.Meta.C_RichValue(x1))(r1) | ((,) _ r0) <- Curry.RunTimeSystem.readQualified("Meta")("RichValue")(r), ((,) x1 r1) <- Prelude.readsPrec(Curry.RunTimeSystem.eleven)(r0)])(r))((Prelude.++)(Prelude.readParen((Prelude.>)(d)(Curry.RunTimeSystem.ten))(\ r -> [(,)(Curry.Module.Meta.C_RichChoice(x1)(x2))(r2) | ((,) _ r0) <- Curry.RunTimeSystem.readQualified("Meta")("RichChoice")(r), ((,) x1 r1) <- Prelude.readsPrec(Curry.RunTimeSystem.eleven)(r0), ((,) x2 r2) <- Prelude.readsPrec(Curry.RunTimeSystem.eleven)(r1)])(r))(Prelude.readParen(Prelude.False)(\ r -> [(,)(Curry.Module.Meta.C_RichSuspend)(r0) | ((,) _ r0) <- Curry.RunTimeSystem.readQualified("Meta")("RichSuspend")(r)])(r)))) instance Read Curry.Module.Meta.C_Exception where readsPrec d r = (Prelude.++)(Prelude.readParen((Prelude.>)(d)(Curry.RunTimeSystem.ten))(\ r -> [(,)(Curry.Module.Meta.C_ErrorCall(x1))(r1) | ((,) _ r0) <- Curry.RunTimeSystem.readQualified("Meta")("ErrorCall")(r), ((,) x1 r1) <- Prelude.readsPrec(Curry.RunTimeSystem.eleven)(r0)])(r))((Prelude.++)(Prelude.readParen((Prelude.>)(d)(Curry.RunTimeSystem.ten))(\ r -> [(,)(Curry.Module.Meta.C_PatternMatchFail(x1))(r1) | ((,) _ r0) <- Curry.RunTimeSystem.readQualified("Meta")("PatternMatchFail")(r), ((,) x1 r1) <- Prelude.readsPrec(Curry.RunTimeSystem.eleven)(r0)])(r))((Prelude.++)(Prelude.readParen((Prelude.>)(d)(Curry.RunTimeSystem.ten))(\ r -> [(,)(Curry.Module.Meta.C_AssertionFailed(x1))(r1) | ((,) _ r0) <- Curry.RunTimeSystem.readQualified("Meta")("AssertionFailed")(r), ((,) x1 r1) <- Prelude.readsPrec(Curry.RunTimeSystem.eleven)(r0)])(r))((Prelude.++)(Prelude.readParen((Prelude.>)(d)(Curry.RunTimeSystem.ten))(\ r -> [(,)(Curry.Module.Meta.C_IOException(x1))(r1) | ((,) _ r0) <- Curry.RunTimeSystem.readQualified("Meta")("IOException")(r), ((,) x1 r1) <- Prelude.readsPrec(Curry.RunTimeSystem.eleven)(r0)])(r))(Prelude.readParen(Prelude.False)(\ r -> [(,)(Curry.Module.Meta.C_PreludeFailed)(r0) | ((,) _ r0) <- Curry.RunTimeSystem.readQualified("Meta")("PreludeFailed")(r)])(r))))) instance (Read t0) => Read (Curry.Module.Meta.C_Seq t0) where readsPrec d r = (Prelude.++)(Prelude.readParen(Prelude.False)(\ r -> [(,)(Curry.Module.Meta.C_Nil)(r0) | ((,) _ r0) <- Curry.RunTimeSystem.readQualified("Meta")("Nil")(r)])(r))((Prelude.++)(Prelude.readParen((Prelude.>)(d)(Curry.RunTimeSystem.ten))(\ r -> [(,)(Curry.Module.Meta.C_Cons(x1)(x2))(r2) | ((,) _ r0) <- Curry.RunTimeSystem.readQualified("Meta")("Cons")(r), ((,) x1 r1) <- Prelude.readsPrec(Curry.RunTimeSystem.eleven)(r0), ((,) x2 r2) <- Prelude.readsPrec(Curry.RunTimeSystem.eleven)(r1)])(r))(Prelude.readParen((Prelude.>)(d)(Curry.RunTimeSystem.ten))(\ r -> [(,)(Curry.Module.Meta.C_Continued(x1))(r1) | ((,) _ r0) <- Curry.RunTimeSystem.readQualified("Meta")("Continued")(r), ((,) x1 r1) <- Prelude.readsPrec(Curry.RunTimeSystem.eleven)(r0)])(r))) c_isFree :: (Curry t0) => t0 -> Curry.RunTimeSystem.State -> Curry.Module.Prelude.C_IO (Curry.Module.Prelude.C_Either t0 t0) c_isFree x1 st = Curry.Module.Meta.c_headNormalFormIO(Curry.Module.Prelude.pf(Curry.Module.Meta.c_prim_isFree))(x1)(st) c_throw :: (Curry t0) => Curry.Module.Meta.C_Exception -> Curry.RunTimeSystem.State -> t0 c_throw x1 st = Curry.Module.Prelude.op_36_35_35(Curry.Module.Prelude.pf(Curry.Module.Meta.c_prim_throw))(x1)(st) c_list :: (Curry t0) => (Curry.Module.Meta.C_Seq t0) -> Curry.RunTimeSystem.State -> Curry.Module.Prelude.List t0 c_list x1@Curry.Module.Meta.C_Nil st = Curry.Module.Prelude.List c_list x1@(Curry.Module.Meta.C_Cons x2 x3) st = (Curry.Module.Prelude.:<)(x2)(Curry.Module.Meta.c_list(x3)(st)) c_list x1@(Curry.Module.Meta.C_Continued x4) st = Curry.Module.Meta.c_list(x4)(st) c_list (Curry.Module.Meta.C_SeqOr i xs) st = Curry.RunTimeSystem.mapOr(\ x st -> Curry.Module.Meta.c_list(x)(st))(i)(xs)(st) c_list x st = Curry.RunTimeSystem.patternFail("Meta.list")(x) c_interleave :: (Curry t0) => (Curry.Module.Meta.C_Seq t0) -> (Curry.Module.Meta.C_Seq t0) -> Curry.RunTimeSystem.State -> Curry.Module.Meta.C_Seq t0 c_interleave x1@Curry.Module.Meta.C_Nil x2 st = Curry.Module.Meta.C_Continued(x2) c_interleave x1@(Curry.Module.Meta.C_Cons x3 x4) x2 st = Curry.Module.Meta.C_Cons(x3)(Curry.Module.Meta.c_interleave(x2)(x4)(st)) c_interleave x1@(Curry.Module.Meta.C_Continued x5) x2 st = Curry.Module.Meta.c_interleave_case_0(x1)(x5)(x2)(st) c_interleave (Curry.Module.Meta.C_SeqOr i xs) x2 st = Curry.RunTimeSystem.mapOr(\ x st -> Curry.Module.Meta.c_interleave(x)(x2)(st))(i)(xs)(st) c_interleave x x2 st = Curry.RunTimeSystem.patternFail("Meta.interleave")(x) c_seq :: (Curry t0) => (Curry.Module.Prelude.C_SearchTree t0) -> Curry.RunTimeSystem.State -> Curry.Module.Meta.C_Seq t0 c_seq x1@Curry.Module.Prelude.C_Fail st = Curry.Module.Meta.C_Nil c_seq x1@(Curry.Module.Prelude.C_Value x2) st = Curry.Module.Meta.C_Cons(x2)(Curry.Module.Meta.C_Nil) c_seq x1@(Curry.Module.Prelude.C_Choice x3) st = Curry.Module.Prelude.c_foldr1(Curry.Module.Prelude.cp(Curry.Module.Prelude.pa)(Curry.Module.Prelude.cp(Curry.Module.Prelude.pf))(Curry.Module.Meta.c_interleave))((Curry.Module.Prelude.:<)(Curry.Module.Meta.C_Nil)(Curry.Module.Prelude.c_map(Curry.Module.Prelude.pf(Curry.Module.Meta.c_seq))(Curry.Module.Prelude.c_filter(Curry.Module.Prelude.pf(Curry.Module.Meta.c_isValOrChoice))(x3)(st))(st)))(st) c_seq x1@Curry.Module.Prelude.C_Suspend st = Curry.Module.Meta.C_Nil c_seq (Curry.Module.Prelude.C_SearchTreeOr i xs) st = Curry.RunTimeSystem.mapOr(\ x st -> Curry.Module.Meta.c_seq(x)(st))(i)(xs)(st) c_seq x st = Curry.RunTimeSystem.patternFail("Meta.seq")(x) c_isValOrChoice :: (Curry t0) => (Curry.Module.Prelude.C_SearchTree t0) -> Curry.RunTimeSystem.State -> Curry.Module.Prelude.C_Bool c_isValOrChoice x1@Curry.Module.Prelude.C_Fail st = Curry.Module.Prelude.C_False c_isValOrChoice x1@(Curry.Module.Prelude.C_Value x2) st = Curry.Module.Prelude.C_True c_isValOrChoice x1@(Curry.Module.Prelude.C_Choice x3) st = Curry.Module.Prelude.C_True c_isValOrChoice x1@Curry.Module.Prelude.C_Suspend st = Curry.Module.Prelude.C_False c_isValOrChoice (Curry.Module.Prelude.C_SearchTreeOr i xs) st = Curry.RunTimeSystem.mapOr(\ x st -> Curry.Module.Meta.c_isValOrChoice(x)(st))(i)(xs)(st) c_isValOrChoice x st = Curry.RunTimeSystem.patternFail("Meta.isValOrChoice")(x) c_allValuesI :: (Curry t0) => Curry.RunTimeSystem.State -> Curry.Module.Prelude.Prim ((Curry.Module.Prelude.C_SearchTree t0) -> Curry.RunTimeSystem.State -> Curry.Module.Prelude.List t0) c_allValuesI st = Curry.Module.Prelude.op_46(Curry.Module.Prelude.pf(Curry.Module.Meta.c_list))(Curry.Module.Prelude.pf(Curry.Module.Meta.c_seq))(st) c_interleave_case_0 x1 x5 x2@Curry.Module.Meta.C_Nil st = x1 c_interleave_case_0 x1 x5 x2@(Curry.Module.Meta.C_Cons x6 x7) st = Curry.Module.Meta.C_Cons(x6)(Curry.Module.Meta.c_interleave(x5)(x7)(st)) c_interleave_case_0 x1 x5 x2@(Curry.Module.Meta.C_Continued x8) st = Curry.Module.Meta.C_Continued(Curry.Module.Meta.c_interleave(x5)(x8)(st)) c_interleave_case_0 x1 x5 (Curry.Module.Meta.C_SeqOr i xs) st = Curry.RunTimeSystem.mapOr(\ x st -> Curry.Module.Meta.c_interleave_case_0(x1)(x5)(x)(st))(i)(xs)(st) c_interleave_case_0 x1 x5 x st = Curry.RunTimeSystem.patternFail("Meta.interleave_case_0")(x) c_prim_isFree :: (Curry t0) => t0 -> Curry.RunTimeSystem.State -> Curry.Module.Prelude.C_IO (Curry.Module.Prelude.C_Either t0 t0) c_prim_isFree x1 st = Curry.Module.Meta.prim_isFree(x1)(st) c_headNormalFormIO :: (Curry t0,Curry t1) => (Curry.Module.Prelude.Prim (t0 -> Curry.RunTimeSystem.State -> Curry.Module.Prelude.C_IO t1)) -> t0 -> Curry.RunTimeSystem.State -> Curry.Module.Prelude.C_IO t1 c_headNormalFormIO x1 x2 st = Curry.Module.Meta.headNormalFormIO(x1)(x2)(st) c_searchTree :: (Curry t0) => t0 -> Curry.RunTimeSystem.State -> Curry.Module.Prelude.C_SearchTree t0 c_searchTree x1 st = Curry.Module.Meta.searchTree(x1)(st) c_gnfIO :: (Curry t0) => t0 -> Curry.RunTimeSystem.State -> Curry.Module.Prelude.C_IO t0 c_gnfIO x1 st = Curry.Module.Meta.gnfIO(x1)(st) c_ghnfIO :: (Curry t0) => t0 -> Curry.RunTimeSystem.State -> Curry.Module.Prelude.C_IO t0 c_ghnfIO x1 st = Curry.Module.Meta.ghnfIO(x1)(st) c_nfIO :: (Curry t0) => t0 -> Curry.RunTimeSystem.State -> Curry.Module.Prelude.C_IO t0 c_nfIO x1 st = Curry.Module.Meta.nfIO(x1)(st) c_hnfIO :: (Curry t0) => t0 -> Curry.RunTimeSystem.State -> Curry.Module.Prelude.C_IO t0 c_hnfIO x1 st = Curry.Module.Meta.hnfIO(x1)(st) c_getRichSearchTree :: (Curry t0) => t0 -> Curry.RunTimeSystem.State -> Curry.Module.Prelude.C_IO (Curry.Module.Meta.C_RichSearchTree t0) c_getRichSearchTree x1 st = Curry.Module.Meta.getRichSearchTree(x1)(st) c_richSearchTree :: (Curry t0) => t0 -> Curry.RunTimeSystem.State -> Curry.Module.Meta.C_RichSearchTree t0 c_richSearchTree x1 st = Curry.Module.Meta.richSearchTree(x1)(st) c_parallelSearch :: (Curry t0) => t0 -> Curry.RunTimeSystem.State -> Curry.Module.Prelude.C_IO (Curry.Module.Prelude.List t0) c_parallelSearch x1 st = Curry.Module.Meta.parallelSearch(x1)(st) c_cover :: (Curry t0) => t0 -> Curry.RunTimeSystem.State -> t0 c_cover x1 st = Curry.Module.Meta.cover(x1)(st) c_st :: (Curry t0) => t0 -> Curry.RunTimeSystem.State -> Curry.Module.Prelude.C_SearchTree t0 c_st x1 st = Curry.Module.Meta.st(x1)(st) c_richST :: (Curry t0) => t0 -> Curry.RunTimeSystem.State -> Curry.Module.Meta.C_RichSearchTree t0 c_richST x1 st = Curry.Module.Meta.richST(x1)(st) c_ors :: (Curry t0) => (Curry.Module.Prelude.List t0) -> Curry.RunTimeSystem.State -> t0 c_ors x1 st = Curry.Module.Meta.ors(x1)(st) c_prim_throw :: (Curry t0) => Curry.Module.Meta.C_Exception -> Curry.RunTimeSystem.State -> t0 c_prim_throw x1 st = Curry.Module.Meta.prim_throw(x1)(st)