mirror of
https://github.com/kanaka/mal.git
synced 2024-09-20 01:57:09 +03:00
Add interop and tests
This commit is contained in:
parent
b6263859a9
commit
3e127081a4
14
pil/core.l
14
pil/core.l
@ -89,6 +89,16 @@
|
||||
(maps '((C) (put X* (cdr C) (car C))) X)
|
||||
X* ) )
|
||||
|
||||
(de pil-to-mal (X)
|
||||
(cond
|
||||
((not X) *MAL-nil)
|
||||
((=T X) *MAL-true)
|
||||
((num? X) (MAL-number X))
|
||||
((str? X) (MAL-string X))
|
||||
((sym? X) (MAL-symbol X))
|
||||
((lst? X) (MAL-list (mapcar pil-to-mal X)))
|
||||
(T (MAL-string (sym X))) ) )
|
||||
|
||||
(def '*Ns
|
||||
'((+ . `(MAL-fn '((A B) (MAL-number (+ (MAL-value A) (MAL-value B))))))
|
||||
(- . `(MAL-fn '((A B) (MAL-number (- (MAL-value A) (MAL-value B))))))
|
||||
@ -161,4 +171,6 @@
|
||||
(readline . `(MAL-fn '((Prompt) (let Output (readline (MAL-value Prompt)) (if (=0 Output) NIL (MAL-string Output))))))
|
||||
(time-ms . `(MAL-fn '(() (MAL-number (/ (usec) 1000)))))
|
||||
(conj . `(MAL-fn MAL-conj))
|
||||
(seq . `(MAL-fn MAL-seq)) ) )
|
||||
(seq . `(MAL-fn MAL-seq))
|
||||
|
||||
(pil-eval . `(MAL-fn '((Input) (pil-to-mal (run (str (MAL-value Input))))))) ) )
|
||||
|
17
pil/tests/stepA_mal.mal
Normal file
17
pil/tests/stepA_mal.mal
Normal file
@ -0,0 +1,17 @@
|
||||
;; Testing basic pil interop
|
||||
|
||||
(pil-eval "T")
|
||||
;=>true
|
||||
|
||||
(pil-eval "NIL")
|
||||
;=>nil
|
||||
|
||||
(pil-eval "(+ 1 1)")
|
||||
;=>2
|
||||
|
||||
(pil-eval "(cons 1 2 3 NIL)")
|
||||
;=>(1 2 3)
|
||||
|
||||
(pil-eval "(use (@A @O) (match '(@A and @O) '(Alpha and Omega)) (prinl @A) (prinl @O))")
|
||||
Alpha
|
||||
Omega
|
Loading…
Reference in New Issue
Block a user