5 Charlie Gerhardus s3050009
9 import Text // To check string length
11 :: Idea = {idea :: String, details :: Maybe Note, user :: Name, number :: Int}
12 :: ProtoIdea = {idea :: String, details :: Maybe Note}
15 derive class iTask Idea, ProtoIdea // generic magic
17 ideas :: Shared [Idea]
18 ideas = sharedStore "Ideas" []
20 addNewIdea :: Task [Idea]
21 addNewIdea = enterInformation "New idea" [EnterWith ideaLens]
22 >>* [OnAction ActionOk (hasValue (\v -> return v))]
23 >>= \n.upd (\is.[n:is]) ideas
25 ideaLens :: ProtoIdea -> Idea
26 ideaLens p = {idea=p.idea, user="Mart", number=42}
31 enterChoiceWithShared "Idea" [] ideas
35 Start :: *World -> *World
36 Start world = startEngine mainTask world