rover

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit f8a58c4a68753404354f9a01d818108c8edaae31
parent 3375906dee97e26ece274e310e4cd3488778a761
Author: Daniel Barlow <dan@telent.net>
Date:   Sun, 22 Jan 2023 17:54:03 +0000

extract function "command"

Diffstat:
Mrover.fnl | 15+++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/rover.fnl b/rover.fnl @@ -1,6 +1,7 @@ (local { : view } (require :fennel)) (local { : merge } (require :lume)) +;; who needs a test framework when you have lisp macros? (macro expect [text actual expected] `(let [actual# ,actual] (or (match actual# @@ -12,13 +13,15 @@ :actual actual# }))))) +(fn command [rover command] + (match rover.direction + :n (merge rover {:y (+ rover.y 1)}) + :s (merge rover {:y (- rover.y 1)}) + :w (merge rover {:x (- rover.x 1)}) + :e (merge rover {:x (+ rover.x 1)}))) + (fn execute [rover [cmd & cmds]] - (let [r1 - (match rover.direction - :n (merge rover {:y (+ rover.y 1)}) - :s (merge rover {:y (- rover.y 1)}) - :w (merge rover {:x (- rover.x 1)}) - :e (merge rover {:x (+ rover.x 1)}))] + (let [r1 (command rover)] (if (next cmds) (r1:execute cmds) r1)))