Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let move x' y' (shape, _, _, height, width) =
- (shape, x', y', height, width)
- type Event =
- | ShapeCreated of shape:string * x:int * y:int * id:int64
- | ShapeMoved of x: int * y: int * id: int64
- | ShapeDeleted of id: int64
- let folder state event =
- match event with
- | ShapeCreated(shape, x, y, id) ->
- Map.add id (shape ,x, y, 50, 50) state
- | ShapeMoved(x', y', id) ->
- Map.map (fun key shape ->
- if key = id then move x' y' shape
- else shape)
- state
- | ShapeDeleted id ->
- Map.remove id state
- let events : Event list =
- [
- ShapeCreated("Rect", 30, 30, 1L)
- ShapeCreated("Circle", 100, 100, 2L)
- ]
- let fold events =
- List.fold folder Map.empty events
- let printEventsAndState events =
- printfn "%A" events
- printfn "%A\n" (fold events)
- printEventsAndState events
- let events2 =
- events @ [ShapeMoved(200,200,1L)]
- printEventsAndState events2
- let events3 =
- events2 @ [ShapeDeleted(1L); ShapeDeleted(2L); ShapeCreated("Triangle", 400, 400, 3L)]
- printEventsAndState events3
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement