diff --git a/main.janet b/main.janet new file mode 100644 index 0000000..1d7aabd --- /dev/null +++ b/main.janet @@ -0,0 +1,14 @@ +(defn diff [expr var] + (cond + (symbol? expr) (if (= expr var) 1 0) + (number? expr) 0 + (match expr + [op & args] (case op + '+ ['+ ;(map |(diff $ var) args)] + '* (let [[a b] args] + ['+ ['* (diff a var) b] + ['* a (diff b var)]]) + (errorf "unknown op: %v" op))))) + +(pp (diff '(+ (* x x) 3) 'x)) +(pp (diff '(+ x 3) 'x))