match/equality

master
cynic 3 years ago
parent 6b8f64648a
commit 98747e6df3
  1. 4
      lib.py
  2. 11
      test.klambda

@ -53,6 +53,10 @@ def execute(ctx):
return idspace[subs[1]] return idspace[subs[1]]
elif ctx[0] == _ident("+"): elif ctx[0] == _ident("+"):
return (subs[1][0], subs[1][1]+subs[2][1]) return (subs[1][0], subs[1][1]+subs[2][1])
elif ctx[0] == _ident("=="):
return ("number", 1.0 if subs[1] == subs[2] else 0.0)
elif ctx[0] == _ident("="):
return ("number", 1.0 if str(float(subs[1][1])) == str(float(subs[2][1])) else 0.0)
elif ctx[0] == _ident("defun"): elif ctx[0] == _ident("defun"):
funcspace[subs[1]] = subs[2] funcspace[subs[1]] = subs[2]
return funcspace[subs[1]] return funcspace[subs[1]]

@ -1,22 +1,21 @@
(defun spit (defun spit
(id miracle (id miracle
"builtins" "print" (id $1) "builtins" "print" (id $1))
)
) )
(defun input (defun input
(id miracle (id miracle
"builtins" "input" ("") "builtins" "input" (""))
)
) )
(defun thesis (defun thesis
(id spit (id spit
("this language belongs to makise kurisu. there are many like it, but this one is hers.") ("this language belongs to makise kurisu. there are many like it, but this one is hers."))
)
) )
(def a (id (id "desu"))) (def a (id (id "desu")))
(spit (spit
("lol swej" (+ 9000 1) a) ("lol swej" (+ 9000 1) a)
) )
(spit ((cond (= "10" (+ 1 9)) "same" "not same")))
(cond ("", (+ 0 1)) (cond ("", (+ 0 1))
(id spit ("one")) (id spit ("one"))
(id spit ("zero")) (id spit ("zero"))

Loading…
Cancel
Save