89 lines
4.1 KiB
Plaintext
89 lines
4.1 KiB
Plaintext
;;;; A dyn in any value position of an operand or an arm — the last form
|
|
;;;; of a let, either arm of an if, an arm of a match, the operand an and
|
|
;;;; or an or answers with — meets its typed partner as a dyn, so what the
|
|
;;;; runtime compares or adds is the dyn value and nothing traps.
|
|
|
|
(defn as-dyn [d dyn] dyn d)
|
|
|
|
(defn a1-t [c bool i i64 d dyn] dyn (+ i (let [z 1] d)))
|
|
(defn a2-t [c bool i i64 d dyn] dyn (+ i (if c d d)))
|
|
(defn a3-t [c bool i i64 d dyn] dyn (+ i (if c d 2)))
|
|
(defn a4-t [c bool i i64 d dyn] dyn (= i (if c d 2)))
|
|
(defn a5-t [c bool i i64 d dyn] dyn (* i (match (Some 1) (Some q) d None d)))
|
|
(defn a6-t [c bool i i64 d dyn] dyn (let [v (if c i (let [z 1] d))] v))
|
|
(defn a7-t [c bool i i64 d dyn] dyn (let [v (match (Some 1) (Some q) i None (let [z 1] d))] v))
|
|
(defn a8-t [c bool i i64 d dyn] dyn (let [v (match (Some 1) None i (Some q) (if c d d))] v))
|
|
(defn a9-t [c bool i i64 d dyn] dyn (- i (do (println 0) d)))
|
|
(defn o1-t [c bool b bool i i64 d dyn] dyn (= b (and d)))
|
|
(defn o2-t [c bool b bool i i64 d dyn] dyn (= b (or d)))
|
|
(defn o3-t [c bool b bool i i64 d dyn] dyn (= b (and c d)))
|
|
(defn o4-t [c bool b bool i i64 d dyn] dyn (= b (not d)))
|
|
(defn o6-t [c bool b bool i i64 d dyn] dyn (let [v (if c b (and d))] v))
|
|
(defn w1-t [c bool b bool d dyn] bool (= b (do (println 0) d)))
|
|
(defn w2-t [c bool b bool d dyn] bool (= b (let [z 1] d)))
|
|
(defn w3-t [c bool b bool d dyn] bool (= b (if c d d)))
|
|
(defn w4-t [c bool b bool d dyn] bool (= b (if c d false)))
|
|
(defn w5-t [c bool b bool d dyn] bool (= b (if c false d)))
|
|
(defn w6-t [c bool b bool d dyn] bool (= b (match (Some 1) (Some q) d None d)))
|
|
(defn w7-t [c bool b bool d dyn] bool (= (do d) b))
|
|
(defn w9-t [c bool b bool d dyn] bool (= b (cond c d :else d)))
|
|
(defn w10-t [c bool b bool d dyn] bool (= b (as-dyn d)))
|
|
(defn w11-t [c bool b bool d dyn] bool (let [v (if c b (let [z 1] d))] (= v v)))
|
|
(defn w12-t [c bool b bool d dyn] bool (= b (if c (do d) (do d))))
|
|
(defn w13-t [c bool b bool d dyn] bool (!= b (let [z 1] (println z) d)))
|
|
|
|
(defn main [] i32
|
|
(println (a1-t true 1 (as-dyn 1.5)))
|
|
(println (a1-t false 1 (as-dyn 1.5)))
|
|
(println (a2-t true 1 (as-dyn 1.5)))
|
|
(println (a2-t false 1 (as-dyn 1.5)))
|
|
(println (a3-t true 1 (as-dyn 1.5)))
|
|
(println (a3-t false 1 (as-dyn 1.5)))
|
|
(println (a4-t true 1 (as-dyn 1.5)))
|
|
(println (a4-t false 1 (as-dyn 1.5)))
|
|
(println (a5-t true 1 (as-dyn 1.5)))
|
|
(println (a5-t false 1 (as-dyn 1.5)))
|
|
(println (a6-t true 1 (as-dyn 1.5)))
|
|
(println (a6-t false 1 (as-dyn 1.5)))
|
|
(println (a7-t true 1 (as-dyn 1.5)))
|
|
(println (a7-t false 1 (as-dyn 1.5)))
|
|
(println (a8-t true 1 (as-dyn 1.5)))
|
|
(println (a8-t false 1 (as-dyn 1.5)))
|
|
(println (a9-t true 1 (as-dyn 1.5)))
|
|
(println (a9-t false 1 (as-dyn 1.5)))
|
|
(println (o1-t true true 1 (as-dyn 1)))
|
|
(println (o1-t true true 1 (as-dyn true)))
|
|
(println (o2-t true true 1 (as-dyn 1)))
|
|
(println (o2-t true true 1 (as-dyn true)))
|
|
(println (o3-t true true 1 (as-dyn 1)))
|
|
(println (o3-t true true 1 (as-dyn true)))
|
|
(println (o4-t true true 1 (as-dyn 1)))
|
|
(println (o4-t true true 1 (as-dyn true)))
|
|
(println (o6-t true true 1 (as-dyn 1)))
|
|
(println (o6-t true true 1 (as-dyn true)))
|
|
(println (w1-t true true (as-dyn 5)))
|
|
(println (w1-t false true (as-dyn 5)))
|
|
(println (w2-t true true (as-dyn 5)))
|
|
(println (w2-t false true (as-dyn 5)))
|
|
(println (w3-t true true (as-dyn 5)))
|
|
(println (w3-t false true (as-dyn 5)))
|
|
(println (w4-t true true (as-dyn 5)))
|
|
(println (w4-t false true (as-dyn 5)))
|
|
(println (w5-t true true (as-dyn 5)))
|
|
(println (w5-t false true (as-dyn 5)))
|
|
(println (w6-t true true (as-dyn 5)))
|
|
(println (w6-t false true (as-dyn 5)))
|
|
(println (w7-t true true (as-dyn 5)))
|
|
(println (w7-t false true (as-dyn 5)))
|
|
(println (w9-t true true (as-dyn 5)))
|
|
(println (w9-t false true (as-dyn 5)))
|
|
(println (w10-t true true (as-dyn 5)))
|
|
(println (w10-t false true (as-dyn 5)))
|
|
(println (w11-t true true (as-dyn 5)))
|
|
(println (w11-t false true (as-dyn 5)))
|
|
(println (w12-t true true (as-dyn 5)))
|
|
(println (w12-t false true (as-dyn 5)))
|
|
(println (w13-t true true (as-dyn 5)))
|
|
(println (w13-t false true (as-dyn 5)))
|
|
0)
|