8ed92690ceb03eaac73ca856e26edcf72a94a99f
[ap2015.git] / a4 / mart / skeleton4.icl
1 module skeleton4
2
3 /*
4 Advanced Programming.
5 Skeleton for assignment 4.
6 To be used in a project with the environment iTasks.
7 Pieter Koopman, pieter@cs.ru.nl
8 */
9
10 import iTasks
11
12 :: Idea:== String
13 :: Name:== String
14
15 :: NamedIdea = { name :: Name, idea :: Idea}
16 derive class iTask NamedIdea // generic magic
17
18 doIdentified :: (Name -> Task x) -> Task x | iTask x
19 doIdentified task = enterInformation "Enter your name" [] >>= task
20
21 editIdea :: Name -> Task NamedIdea
22 editIdea name = enterInformation (name +++ " add your idea") []
23 >>= \idea . return {name = name, idea = idea}
24
25 mainTask = doIdentified editIdea >>= viewInformation "The result" []
26
27 Start :: *World -> *World
28 Start world = startEngine mainTask world