module test import iTasks import Data.Func import Debug.Performance import iTasks.Extensions.Terminal import Text.Terminal.VT100 n :== 5000 Start w = printTime (toString n +++ " steps: ") (doTasks $ onStartup $ steps n) $ printTime (toString n +++ " sequence: ") (doTasks $ onStartup $ seq n) $ printTime (toString n +++ " all: ") (doTasks $ onStartup $ all n) $ printTime (toString n +++ " for: ") (doTasks $ onStartup $ for n) $ printTime (toString (n/100) +++ " exproc: ") (doTasks $ onStartup $ exp (n/100)) $ printTime (toString n +++ " get: ") (doTasks $ onStartup $ getter n) $ printTime (toString n +++ " set: ") (doTasks $ onStartup $ setter n) $ printTime (toString n +++ " upd: ") (doTasks $ onStartup $ updater n) $ printTime (toString n +++ " view: ") (doTasks $ onStartup $ view n) $ printTime (toString n +++ " update: ") (doTasks $ onStartup $ update n) $ w sds = sharedStore "bork" 42 steps :: Int -> Task Int steps 0 = return 0 steps n = return n @ dec >>= steps seq :: Int -> Task [Int] seq n = sequence (repeatn n (return 42)) all :: Int -> Task [Int] all n = allTasks (repeatn n (return 42)) for :: Int -> Task Int for n = foreverStIf (\x->x < n) 0 (return o inc) exp :: Int -> Task Int exp 0 = return 0 exp n = runProcessInteractive zero "/bin/ls" [] Nothing >>| exp (n-1) getter :: Int -> Task Int getter 0 = return 0 getter n = get sds >>| getter (n-1) setter :: Int -> Task Int setter 0 = return 0 setter n = set 42 sds >>| setter (n-1) updater :: Int -> Task Int updater 0 = return 0 updater n = upd id sds >>| updater (n-1) view :: Int -> Task Int view 0 = return 0 view n = viewInformation () [] n >>~ view o dec update :: Int -> Task Int update 0 = return 0 update n = updateInformation () [] n >>~ update o dec