Download de presentatie
De presentatie wordt gedownload. Even geduld aub
1
Sharing
2
Shared Data Gebruikt voor 3 doelstellingen
als resource voor algemeen toegankelijke informatie (tijd, datum, etc) als persistente opslag voor informatie (ook na opnieuw opstarten taak weer aanwezig) om informatie tussen verschillende taken te delen
3
Shared Data als resource
Data and Time getDateAndTime :: Task DateTime getDateAndTime = get currentDateTime currentDataTime is een shared resource met de get functie haal je de inhoud van de resource op
4
Simpel ToDo lijstje toDoList = sharedStore "SimpleToDo" [] toDo :: Task [String] toDo = get toDoList >>= \list -> viewInformation "ToDo List" [] list >>* [Always (Action "Erase all") (eraseAll >>| toDo) ,Always (Action "New Item") (newItem >>| toDo) ,Always (Action "Stop") (return list) ] newItem :: Task Void newItem = enterInformation "New todo" [] >>= \item -> update (\items -> items ++ [item] ) toDoList >>| return Void eraseAll :: Task Void eraseAll = set [] toDoList >>| return Void
5
Simpel ToDo lijstje sharedStore naam startwaarde Creeert een store met een naam en initiele waarde. Met get share kan de inhoud worden opgehaald. Met set share waarde kan de waarde in de share worden vervangen. Met update functie share kan de share geupdate worden.
6
Extended To-Do lijst :: ToDo = { name :: String , deadline :: Maybe Date , remark :: Maybe Note , done :: Bool } derive class iTask ToDo toDoList :: Shared [ToDo] toDoList = sharedStore "ToDoLijst" []
7
Extended To-Do lijst toDo :: Task String toDo = viewSharedInformation "ToDo List" [] toDoList >>* [Always (Action "Show Ready") (showReady >>| toDo) ,Always (Action "Make changes") (updateToDoList >>| toDo) ,Always (Action "Remove ready") (removeReady >>| toDo) ,Always (Action "New Item") (newItem >>| toDo) ,Always (Action "Stop")(viewInformation "App ready" [] "Gestopt") ]
8
Extended To-Do lijst updateToDoList :: Task Void updateToDoList = updateSharedInformation "List" [] toDoList >>| return Void newItem :: Task Void newItem = enterInformation "New todo" [] >>= \item -> update (\items -> items ++ [item]) toDoList >>| return Void
9
Extended To-Do lijst removeReady :: Task Void removeReady = update remReady toDoList >>| return Void where remReady tds = [td\\ td <- tds| not td.done] showReady :: Task Void showReady = get toDoList >>= \ts -> viewInformation "Ready" [] [t\\ t <- ts| t.done] >>| return Void
10
Twitter App Chat applicatie waar gebruiker kan inloggen en berichten voor bepaalde thread (hashtag) kan volgen en zelf berichten (tweets) kan toevoegen Tweets zijn gegroepeerd per thread Een tweet bestaat uit een paar (username,content)
11
Twitter App Start :: *World -> *World Start world = startEngine (tweeting>>= viewInformation "Ready" []) world :: UserName :== String :: Tweet :== (UserName,String) twitterId :: String -> Shared [Tweet] twitterId name = sharedStore ("Twitter with " +++ name) [] tweeting = enterInformation "Give username" [] >>= \me -> enterInformation "Give thread name" [] >>= \name -> joinTweets me name (twitterId name)
12
Twitter App joinTweets :: String String (Shared [Tweet]) -> Task Void joinTweets me thread tweetsStore = viewSharedInformation (“Following" +++ thread) [] tweetsStore ||- enterInformation "Add a tweet" [] >>* [ Always (Action "Quit") (return Void) , WithResult (Action "Commit") (const True) commit ] where commit :: String -> Task Void commit message = update (\tws -> tws++ [(me,message)]) tweetsStore >>| joinTweets me thread tweetsStore
13
Twitter App ||- doe twee taken parallel en geef het resultaat van de rechtse taak terug
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.