7 lit :: a -> v a | toString a
8 plus :: (v a) (v a) -> v a | + a
10 class rtrn v :: (v a) -> v (TaskValue a)
13 unPrint :: (Print a) -> String
17 unEval :: (Eval a) -> a
20 :: TaskValue a = NoValue | Value a Bool
24 lit a = P (toString a)
25 plus (P a) (P b) = P (a +++ "+" +++ b)
30 plus (E a) (E b) = E (a + b)
32 instance rtrn Print where rtrn (P a) = P ("Task (" +++ a +++ ")")
33 instance rtrn Eval where rtrn (E a) = E (Value a True)
36 instance default Int where default = 42
37 instance default (TaskValue a) where default = NoValue
40 (A.v: a -> v (TaskValue b) | rtrn, arith v)
42 | +, toString, default b & default a
44 ( unPrint (mtask default)
45 , default //unEval (mtask default)
48 Start :: (String, Int)
49 Start = listItem \i->rtrn (lit i)