data Thread : (Type -> Type) -> Type -> TypeHThread : (Type -> Type) -> Type -> Typeyield : Inj Thread sig => Free sig ()fork : Inj Thread sig => Free sig a -> Free sig ()data Daemon : ((Type -> Type) -> Type -> Type) -> Typedata SThread : ((Type -> Type) -> Type -> Type) -> Type -> TypeSYield : Free (Thread :+: sig) r -> SThread sig rSFork : Daemon sig -> Free (Thread :+: sig) r -> SThread sig rSActive : r -> SThread sig rthread : Syntax sig => Handler (SThread sig) (Free (Thread :+: sig)) (Free sig)runThread : Syntax sig => Free (Thread :+: sig) a -> Free sig (SThread sig a)schedule : Syntax sig => Free (Thread :+: sig) a -> Free sig a