;;;; A program's names do not change what the prelude means. The prelude's ;;;; generics write their type variable bare, (vec-new t), and name ;;;; parameters t, k and v; a global or a type the program declares under one ;;;; of those names is the program's, and the prelude's own reading stands. (defonce t [4 i32]) (defstruct k [x i32]) (defenum v [lo hi]) (defn is-even [x i32] bool (= (% x 2) 0)) (defn main [] i32 (set (at t 0) 7) (let [xs [1 2 3 4 5 6] evens (filter (slice xs) is-even)] (println (length evens)) ; 3 (println (at evens 2)) ; 6 (free evens)) (println (at t 0)) ; 7 (println (.x (k {.x 5}))) ; 5 (println (i32 (v 1))) ; 1 0)