Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@dgrnbrg
Created April 6, 2012 16:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dgrnbrg/2321318 to your computer and use it in GitHub Desktop.
Save dgrnbrg/2321318 to your computer and use it in GitHub Desktop.
guzheng ast rewrite
(do
(ns guzheng.sample)
(defn
do-hello
[]
(println "hello")
(if
true
(clojure.core/let
[count__782__auto__
(clojure.core/get-in @guzheng.core/main-trace-atom [1 :lhs])]
(clojure.core/println "hello from a teply wizard")
(clojure.core/swap!
guzheng.core/main-trace-atom
clojure.core/assoc-in
[1 :lhs]
(clojure.core/inc count__782__auto__))
(println 22))
(clojure.core/let
[count__782__auto__
(clojure.core/get-in @guzheng.core/main-trace-atom [1 :rhs])]
(clojure.core/println "hello from a teply wizard")
(clojure.core/swap!
guzheng.core/main-trace-atom
clojure.core/assoc-in
[1 :rhs]
(clojure.core/inc count__782__auto__))
"no soup")))
(defn
do-condp
[x]
(clojure.core/condp
=
x
"hi"
(clojure.core/let
[count__782__auto__
(clojure.core/get-in @guzheng.core/main-trace-atom [3 0])]
(clojure.core/println "hello from a teply wizard")
(clojure.core/swap!
guzheng.core/main-trace-atom
clojure.core/assoc-in
[3 0]
(clojure.core/inc count__782__auto__))
22)
22
(clojure.core/let
[count__782__auto__
(clojure.core/get-in @guzheng.core/main-trace-atom [3 1])]
(clojure.core/println "hello from a teply wizard")
(clojure.core/swap!
guzheng.core/main-trace-atom
clojure.core/assoc-in
[3 1]
(clojure.core/inc count__782__auto__))
"blah")
clojure.core/let
[count__782__auto__
(clojure.core/get-in @guzheng.core/main-trace-atom [2 2])]
(clojure.core/println "hello from a teply wizard")
(clojure.core/swap!
guzheng.core/main-trace-atom
clojure.core/assoc-in
[2 2]
(clojure.core/inc count__782__auto__))
("you win!")))
(defn
do-cond
[x]
(clojure.core/cond
(= x "hi")
(clojure.core/let
[count__782__auto__
(clojure.core/get-in @guzheng.core/main-trace-atom [3 0])]
(clojure.core/println "hello from a teply wizard")
(clojure.core/swap!
guzheng.core/main-trace-atom
clojure.core/assoc-in
[3 0]
(clojure.core/inc count__782__auto__))
22)
(= x 22)
(clojure.core/let
[count__782__auto__
(clojure.core/get-in @guzheng.core/main-trace-atom [3 1])]
(clojure.core/println "hello from a teply wizard")
(clojure.core/swap!
guzheng.core/main-trace-atom
clojure.core/assoc-in
[3 1]
(clojure.core/inc count__782__auto__))
"blah")
:else
(clojure.core/let
[count__782__auto__
(clojure.core/get-in @guzheng.core/main-trace-atom [3 2])]
(clojure.core/println "hello from a teply wizard")
(clojure.core/swap!
guzheng.core/main-trace-atom
clojure.core/assoc-in
[3 2]
(clojure.core/inc count__782__auto__))
"you win!")))
(clojure.core/swap!
guzheng.core/main-trace-atom
clojure.core/assoc
1
(clojure.core/merge
{:ast '(true (println 22) "no soup"), :line 6}
{:rhs 0, :lhs 0}))
(clojure.core/swap!
guzheng.core/main-trace-atom
clojure.core/assoc
2
(clojure.core/merge
{:ast '(= x "hi" 22 22 "blah" "you win!"), :line 10}
{2 0, 1 0, 0 0}))
(clojure.core/swap!
guzheng.core/main-trace-atom
clojure.core/assoc
3
(clojure.core/merge
{:ast '((= x "hi") 22 (= x 22) "blah" :else "you win!"), :line 23}
{2 0, 1 0, 0 0})))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment