   {:pre [(pos? x)]}
   (+ x 2))
 
-;(try-pre -2)
+#_(try-pre -2)
 (try-pre 2)
+
+;the following shows how a lock works
+
+(def o (Object.))
+
+(future (locking o
+          (Thread/sleep 10000)
+          (println "done!")))
+
+(future (locking o
+          (println "done!")))
 
 
 

(->NamedPoint "haha" 3 4)

(map->NamedPoint {:name "haha" :x 2 :y 4})




;(cols (update vov-a 2 4 3))


;define records

(defrecord NamedPoint [^String name ^long x ^long y])

