10 lines
453 B
Haskell
10 lines
453 B
Haskell
step :: State -> State
|
|
step = isBlack ?>> (setWhite >>> turnRight,
|
|
setBlack >>> turnLeft) >>> move
|
|
where
|
|
isBlack (State p _ m) = member p m
|
|
setBlack (State p d m) = State p d (insert p m)
|
|
setWhite (State p d m) = State p d (delete p m)
|
|
turnRight (State p (x,y) m) = State p (y,-x) m
|
|
turnLeft (State p (x,y) m) = State p (-y,x) m
|
|
move (State (x,y) (dx,dy) m) = State (x+dx, y+dy) (dx, dy) m
|