Ok, so someFunction should modify the server's configuration? Maybe you
can model it with an IORef like this (untested!):
> import Data.IORef
>
> type Config = String -- String to be prepended to every answer
>
> someFunction :: String -> IORef Config -> IORef Config
> someFunction s r = modifyIORef s (++ s)
>
> startMyServer :: IO (IORef Config)
> startMyServer = do
> r <- newIORef ""
> forkIO $ runServer r
> return r
>
> runServer :: IORef -> IO ()
> runServer r = do
> client <- waitForAndAcceptConnection
> request <- getSomeData client
> prep <- readIORef r
> sendSomeAnswer client $ prep ++ request
> runServer r
And then:
*MyModule> r <- startMyServer
(plain echo server running)
*MyModule> someFunction "hello" r
(now echo server with prepend "hello")
*MyModule> someFunction "world" r
(now echo server with prepend "helloworld")
-- Steffen
On 02/04/2011 03:41 PM, C K Kashyap wrote:
Thanks Steffen,
Prelude> :l MyModule.hs
*MyModule> conn <- waitForAndAcceptConnection
*MyModule> someData <- getSomeData conn
*MyModule> sendSomeAnswer conn $ processSomeData someData
...
So this cycle of getting data from the connection and writing answer
on the connection should happen concurrently with the ghci interaction
... so lets say that when the "thread" is forked that listens on
socket behaves like an echo server ... as in, it reads data from the
client till "\n" and echoes it back ... All this would happen without
the intervention of the user using GHCI ... However, using GHCI, the
user should be able to modify the code such that the server returns
"hello" prepended to the input. ..
> startMyServer -- at this point the the echo server gets spawned
> -- echo server continues to run
> someFunction "hello" --- now onwards hello gets prepended
> --- echo server continues to run returning
"hello" prepended
> someFunction "world" --- now onwards "helloworld" get
I hope this is possible without having to modify ghci itself.
Regards,
Kashyap
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe