mirror of
https://github.com/peklaiho/madlisp.git
synced 2024-11-22 21:35:03 +00:00
change calc.mad to use util.mad
This commit is contained in:
parent
b1c1eb5cf1
commit
45bc9ec2ef
@ -9,6 +9,9 @@
|
|||||||
;; This script should be executed directly, not inside the repl.
|
;; This script should be executed directly, not inside the repl.
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
;; Load some utility functions we use
|
||||||
|
(load (str __DIR__ "util.mad"))
|
||||||
|
|
||||||
;; Define commands
|
;; Define commands
|
||||||
(defn cmdAdd (args) (apply + args))
|
(defn cmdAdd (args) (apply + args))
|
||||||
(defn cmdDiv (args) (apply / args))
|
(defn cmdDiv (args) (apply / args))
|
||||||
@ -31,7 +34,7 @@
|
|||||||
|
|
||||||
;; Find the first command which starts with the given name, or null
|
;; Find the first command which starts with the given name, or null
|
||||||
(defn findCmd (name)
|
(defn findCmd (name)
|
||||||
(if (empty? name) null
|
(if (null? name) null
|
||||||
(let (matches (filterh (fn (v k) (prefix? k name)) cmdMap))
|
(let (matches (filterh (fn (v k) (prefix? k name)) cmdMap))
|
||||||
(if (empty? matches) null
|
(if (empty? matches) null
|
||||||
(get matches (first (keys matches)))))))
|
(get matches (first (keys matches)))))))
|
||||||
@ -39,7 +42,7 @@
|
|||||||
;; Split input by spaces, find command that matches the first word
|
;; Split input by spaces, find command that matches the first word
|
||||||
;; and call it, giving the rest of the words as arguments.
|
;; and call it, giving the rest of the words as arguments.
|
||||||
(defn parseInput (inp)
|
(defn parseInput (inp)
|
||||||
(let (words (split " " inp) cname (first words) args (tail words) cmd (findCmd cname))
|
(let (words (str-first-rest inp) cname (first words) args (second words) cmd (findCmd cname))
|
||||||
(if (null? cmd) "Unknown command, try 'help'."
|
(if (null? cmd) "Unknown command, try 'help'."
|
||||||
(if (< (len args) (second cmd)) (str "Give at least 2 arguments to " cname ".")
|
(if (< (len args) (second cmd)) (str "Give at least 2 arguments to " cname ".")
|
||||||
((first cmd) args)))))
|
((first cmd) args)))))
|
||||||
|
Loading…
Reference in New Issue
Block a user