Advertisement
Guest User

Untitled

a guest
Feb 21st, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 1.11 KB | None | 0 0
  1. let move x' y' (shape, _, _, height, width) =
  2.     (shape, x', y', height, width)
  3.  
  4. type Event =
  5.     | ShapeCreated of shape:string * x:int * y:int * id:int64
  6.     | ShapeMoved of x: int * y: int * id: int64
  7.     | ShapeDeleted of id: int64
  8.  
  9. let folder state event =
  10.     match event with
  11.     | ShapeCreated(shape, x, y, id) ->
  12.         Map.add id (shape ,x, y, 50, 50) state
  13.     | ShapeMoved(x', y', id) ->
  14.         Map.map (fun key shape ->
  15.             if key = id then move x' y' shape
  16.             else shape)
  17.             state
  18.     | ShapeDeleted id ->
  19.         Map.remove id state
  20.  
  21. let events : Event list =
  22.     [
  23.     ShapeCreated("Rect", 30, 30, 1L)
  24.     ShapeCreated("Circle", 100, 100, 2L)
  25.     ]
  26.  
  27. let fold events =
  28.     List.fold folder Map.empty events
  29.  
  30. let printEventsAndState events =
  31.     printfn "%A" events
  32.     printfn "%A\n" (fold events)
  33.    
  34. printEventsAndState events
  35.  
  36. let events2 =
  37.     events @ [ShapeMoved(200,200,1L)]
  38.  
  39. printEventsAndState events2
  40.  
  41. let events3 =
  42.     events2 @ [ShapeDeleted(1L); ShapeDeleted(2L); ShapeCreated("Triangle", 400, 400, 3L)]
  43.  
  44. printEventsAndState events3
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement