フィボナッチ
できたー。値をチャネルに投げ込むときは、がっちり型を書くほうが無難みたいです。
module Main where import PiMonad hiding (piStart) import PiMonad.IO.Console import PiMonad.Channel import PiMonad.Network main = piStart False Nothing mainPr mainPr :: Maybe (I (), NewP) -> PiMonad () mainPr _ = do s <- new fork $ fib 10 s s'<- recv s cout <!. show s' exit <! (0::Int) fib :: Int -> L Priv Int -> PiMonad () fib n s | n < 1 = s <! (1::Int) | otherwise = do a <- new b <- new fib (n-1) a fib (n-2) b a' <- recv a b' <- recv b s <! (a' + b')