フィボナッチ

できたー。値をチャネルに投げ込むときは、がっちり型を書くほうが無難みたいです。

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')