86 lines
1.6 KiB
Plaintext
86 lines
1.6 KiB
Plaintext
(defstruct P [x i32 y i32])
|
|
(defn app [g (Fn [i32] i32) v i32] i32 (g v))
|
|
|
|
(defn shadow-chain [] ()
|
|
(let [x 1]
|
|
(let [x (+ x 10)]
|
|
(println x))
|
|
(println x)
|
|
(let [x (+ x 100)]
|
|
(println x)
|
|
(let [x (* x 2)] (println x))
|
|
(println x))
|
|
(println x)))
|
|
|
|
(defn closes [] i32
|
|
(let [x 1]
|
|
(let [x 5]
|
|
(println x))
|
|
(let [f 0]
|
|
(app (fn [y] (+ x y)) (+ f 2)))))
|
|
|
|
(defn loopy [] ()
|
|
(let [i 0]
|
|
(while (< i 5)
|
|
(let [i (* i 100)]
|
|
(println i))
|
|
(set i (+ i 1))
|
|
(when (= i 3) (continue))
|
|
(println i))))
|
|
|
|
(defn loopr [] i32
|
|
(loop [n 0 acc 0]
|
|
(let [n (* n 2)]
|
|
(println n))
|
|
(if (< n 4) (recur (+ n 1) (+ acc n)) acc)))
|
|
|
|
(defn ret [a i32] i32
|
|
(let [a (+ a 1)]
|
|
(println a))
|
|
(when (> a 3)
|
|
(let [a 0] (println a))
|
|
(return a))
|
|
(let [a (- a 1)] (println a))
|
|
a)
|
|
|
|
(defn deferring [] ()
|
|
(let [x 1]
|
|
(let [x 2]
|
|
(defer (println x)))
|
|
(defer (println x))
|
|
(println "body")))
|
|
|
|
(defn destr [] ()
|
|
(let [p (P {.x 3 .y 4}) x 100]
|
|
(let [{.x .y} p]
|
|
(println (+ x y)))
|
|
(println x)
|
|
(let [{:keys [x]} p]
|
|
(println x))
|
|
(println x)
|
|
(let [[a b] [x 7]]
|
|
(println a))
|
|
(println x)))
|
|
|
|
(defn dos [c bool] i32
|
|
(let [v 0]
|
|
(if c
|
|
(do (let [v 5] (println v)) (println v))
|
|
(do (let [v 6] (println v)) (println v)))
|
|
(unless c (let [v 9] (println v)) (println v))
|
|
(when c (let [v 8] (println v)) (println v))
|
|
v))
|
|
|
|
(defn main [] i32
|
|
(shadow-chain)
|
|
(println (closes))
|
|
(loopy)
|
|
(println (loopr))
|
|
(println (ret 5))
|
|
(println (ret 1))
|
|
(deferring)
|
|
(destr)
|
|
(println (dos true))
|
|
(println (dos false))
|
|
0)
|