macros.lisp 594 B

123456789101112131415161718192021222324252627282930
  1. ;; testing macros
  2. (def! inc (fn* [a] (i+ a 1)))
  3. (def! gensym
  4. (let* [counter (atom 0)]
  5. (fn* []
  6. (symbol (str "G__" (swap! counter inc))))))
  7. (defmacro! zk-square (fn* [var] (
  8. (let* [v1 (gensym)
  9. v2 (gensym)] (
  10. (println 'values var)
  11. `(alloc ~v1 ~var)
  12. `(alloc ~v2 (square ~var))
  13. `(enforce
  14. (scalar::one ~v1)
  15. (scalar::one ~v1)
  16. (scalar::one ~v2)
  17. )
  18. )
  19. ))
  20. ))
  21. (def! param1 (scalar 1))
  22. (def! param2 (scalar 3))
  23. (prove
  24. (
  25. (zk-square param1)
  26. (zk-square param2)
  27. )
  28. )