Интернет магазин китайских планшетных компьютеров



Компьютеры - Clojure - Примеры

28 апреля 2011


Оглавление:
1. Clojure
2. Макросы
3. Примеры



Hello world:


Потокобезопасный генератор уникальных серийных номеров:

]
  (defn generate-unique-id
    "Возвращает различные числовые ID для каждого вызова."
    
    ))

Анонимный подкласс java.io.Writer который ничего не выводит, и макрос используемый, чтобы заглушить весь вывод внутри него:

(def bit-bucket-writer
  (proxy  
    
    
    ))
 
(defmacro noprint
  "Вычисляет заданные выражения, заглушая весь *вывод* на экран".
  
  `(binding 
     ~@forms))
 
(noprint
 )

10 потоков, манипулирующих одной общей структурой данных, которая состоит из 100 векторов, каждый из которых содержит 10 уникальных чисел. Каждый поток многократно выбирает две случайных позиции в двух случайных векторах и обменивает местами их значения. Все изменения векторов происходят в единой транзакции путем использования системы транзакционной памяти  clojure. Поэтому даже после 1000 итераций в каждом из потоков числа не теряются.

(defn run 
  
                           ))))
        swap #
                    v2 
                    i1 
                    i2 ]
                (dosync
                  i1)]
                    assoc i1  i2))
                    assoc i2 temp))))
        report #(do
                 )
                 (println "Distinct:"
                          )))))]
    
    ))))
    ))
 

Вывод предыдущего примера:

(  ...
 )
Distinct: 1000
 
(  ...
 )
Distinct: 1000


Просмотров: 2567


<<< Bouncy Castle