12 November 2010

Haskell daemon

Seo sampla daemon Haskell:


import System.Exit
import System.IO.Unsafe
import System.Posix.Signals
import Control.Concurrent

termReceived = unsafePerformIO (newMVar False)

handleTERM :: IO ()
handleTERM = do
swapMVar termReceived True
return ()

wrapup :: IO ()
wrapup = do
-- Shut down cleanly
putStrLn "shutting down"
return ()

doWork :: IO ()
doWork = do
-- For now, just pretend we're doing something
putStrLn "working"
threadDelay 20000

loop :: IO ()
loop = do
timeToStop <- readMVar termReceived
if timeToStop
then wrapup
else do
doWork
loop


main = do
installHandler sigTERM (Catch handleTERM) Nothing
loop

3 comments:

Anonymous said...

Dea-chód atá scríofa agat. Cad a dhéanfaidh tú leí?

Fresin seans go ag baint mí-úsáid as "do". Ar iarradh tú é a scríobh ón "suicra comhréire"?

An bhfuil fhois agat go bhfuil focal nua sa theanga se thoradh ar Haskell? D'iarras ar an gcoiste téarmaíochta an bhfuil focal ann ar "functor" ach ní raibh. Thug mé an moladh "feidhmeoir" dóibh agus anois sin é!

Muddle-headed Wombat said...

Focal nua ó Haskell... sin é go hiontach!

Ghreamaigh mé an cód sa bhlog seo, agus
ní thaispeánadh spásanna ar bith sa chód. Ach chuir mé clib "pre" leis, agus tá sé inléite anois.

Tá mé ag déanamh taighde chun céim mháistir a fháil (agus ansin, céim dhochtúra, le cúnamh Dé). Ábhar mo chuid taighde ná "intleacht shaorga" (artificial intelligence). Tá mé ag cur na fionnachtana nua ó thaighde intinne le "líonra néarach" (neural networks) agus le "clárú géiniteach" (genetic programming).

Tá mé ag scríobh clár le créatúir saorga (alife). Tá siad "evolving" fadhb ginearálta a réiteach. An-craic ar fad.

Muddle-headed Wombat said...

Agus rinne mé dearmad ar rud a rá: Scríobh mé an daemon sin mar "driver" don cruinne saorga a bhfuil na créatúir saorga ina gcónaí air.

Tá mé fiosrach... mura mhiste leat, inis dom cé thú féin? Kevin S, b'fhéidir?