From 51cb3a95f5de6a8c6c0843a8fa35e6613be0116e Mon Sep 17 00:00:00 2001 From: dvdrw Date: Tue, 16 Jun 2026 14:13:43 +0200 Subject: [PATCH] feat: add pass, continue util functions --- src/Control/Actor.hs | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/Control/Actor.hs b/src/Control/Actor.hs index 89832ed..30969f8 100644 --- a/src/Control/Actor.hs +++ b/src/Control/Actor.hs @@ -5,6 +5,8 @@ module Control.Actor , module Control.Actor.Core , module Control.Actor.Supervision , module Control.Actor.Network + , pass + , continue -- Demo , pingActor , forwardActorWithCell @@ -25,9 +27,16 @@ import Control.Concurrent.STM ( TMVar, TVar , atomically, newEmptyTMVarIO, newTVarIO, readTMVar, readTVarIO, writeTQueue, writeTVar ) +import Control.Monad ((<=<)) import Control.Monad.Reader (MonadIO (..)) import Unsafe.Coerce (unsafeCoerce) +continue :: r -> Actor u r +continue x = (,) (Just x) <$> state + +pass :: Actor u r +pass = (,) Nothing <$> state + -- Demo pingActor :: String -> Actor () String @@ -72,18 +81,12 @@ system = do -- Network demo -replyWith :: r -> Actor u r -replyWith x = do - s <- state - return (Just x, s) - -pass :: Actor u r -pass = state >>= (return . (,) Nothing) - +newNodeActor :: NodeAddr -> Actor () NodeId +newNodeActor = continue <=< liftRuntime . connect Nothing -- | Actor on node 2: echo — returns whatever it received. echoActor :: String -> Actor () String -echoActor = replyWith +echoActor = continue -- | Actor on node 2: printer — side-effects only. printerActor :: String -> Actor () ()