; lazy infinite sequence with recursive definition (def fib-seq-lazy ((fn rfib [a b] (lazy-seq (cons a (rfib b (+ a b))))) 0 1)) (take 20 fib-seq-lazy) ; 'unless' cannot be defined with a function because ; it does not always evaluate both its arguments. (defmacro unless [pred a b] `(if (not ~pred) ~a ~b)) (unless false (println "Will print") (println "Will not print")) (defn run [nvecs nitems nthreads niters] (let [vec-refs (vec (map (comp ref vec) (partition nitems (range (* nvecs nitems))))) swap #(let [v1 (rand-int nvecs) v2 (rand-int nvecs) i1 (rand-int nitems) i2 (rand-int nitems)] (dosync (let [temp (nth @(vec-refs v1) i1)] (alter (vec-refs v1) assoc i1 (nth @(vec-refs v2) i2)) (alter (vec-refs v2) assoc i2 temp)))) report #(do (prn (map deref vec-refs)) (println "Distinct:" (count (distinct (apply concat (map deref vec-refs))))))] (report) (dorun (apply pcalls (repeat nthreads #(dotimes [_ niters] (swap))))) (report))) ; When run, we see no values get lost or duplicated in the shuffle. ; There are 36 distinct numbers before and after. (run 6 6 6 100000) (import com.beaker.BeakerXClasspathTest) (def classpathTest (new BeakerXClasspathTest)) %classpath add jar ../resources/jar/BeakerXClasspathTest.jar (import com.beaker.BeakerXClasspathTest) (def classpathTest (new BeakerXClasspathTest)) (BeakerXClasspathTest/staticTest) (. classpathTest getObjectTest) [{:foo 1}{:foo 2}] (import '[com.twosigma.beakerx.chart.xychart Plot] '[com.twosigma.beakerx.chart.xychart.plotitem Line]) (doto (Plot.) (.setTitle "We Will Control the Title") (.setXLabel "Horizontal") (.setYLabel "Vertical") (.add (doto (Line.) (.setX [0, 1, 2, 3, 4, 5]) (.setY [0, 1, 6, 5, 2, 8])))) %import com.twosigma.beakerx.widget.IntSlider (new IntSlider) %unimport com.twosigma.beakerx.widget.IntSlider (new IntSlider)