Clojure: განსხვავება გადახედვებს შორის

1 806 ბაიტი დაემატა ,  9 წლის წინ
არ არის რედაქტირების რეზიუმე
}}
 
'''Clojure''' (გამოითქმის როგორც "კლოზურ"<ref>http://groups.google.com/group/clojure/msg/766b75baa7987850</ref>) არის [[ლისპი|ლისპისნაირი]] [[პროგრამირების ენისენა|პროგრამირების ენაენის]] თანამედროვე დიალექტი, შექმნილია რიჩ ჰიკეის მიერ. იგი არის საერთო დანიშნულების პროგრამირების ენა, ინტერაქტიული პროგრამირების მხარდაჭერით, უბიძგებს [[ფუნქციური პროგრამირების|ფუნქციური პროგრამირება]] სტილის გამოყენებას, და აადვილებს [[სრედი (საინფორმაციო მეცნიერება)|მრავალსრედიან]] პროგრამირებას.
 
Clojure-ი ფუნქციონირენს [[Java Virtual Machine|Java Virtual Machine-ზე]], [[Common Language Runtime|Common Language Runtime-ზე]] და აგრეთვე შესაძლოა მისი [[ჯავასკრიპტი|ჯავასკრიპტში]] გადაყვანა. როგორც სხვა ლისპისნაირი ენები, Clojure-ი ამუშავებს კოდს მონაცემებისნაირად და აქვს ძლიერი [[მაკრო (საინფორმაციო მეცნიერება)|მაკრო]] სისტემა.
== სინტაქსი ==
 
როგორც სხვა [[ლისპის|ლისპი|ლისპის]] ტიპიურ [[პროგრამირების ენა|ენებში]], Clojure-ის სინტაქსი არის დაყრდნობილი [[S-expression|S-expression-ებზე]] რომლებიც არიან სინტატიკურად ანალიზირებულნი [[მონაცემთა სტრუქტურა|მონაცემთა სტრუქტურებში]] სანამ იგი [[კომპილირება|კომპილირებული]] იქნება. Clojure-ი არის [[lisp-1]], და მისი მიზანი არ არის რომ წყარო კოდი შეთავსებადი იყოს სხვა ლისპ დიალექტებთან.
 
== მაგალითები ==
 
[[Hello world]]:
 
<source lang="lisp">
(println "Hello, world!")
</source>
 
ფუნქციის გამოცხადება:
 
<source lang="lisp">
(defn square [x]
(* x x))
</source>
 
Hello World-ი გრაფიკული ინტერფეისით Java Swing ბიბლიოთეკის მეშვეობით:
 
<source lang="lisp">
(javax.swing.JOptionPane/showMessageDialog nil "Hello World" )
</source>
 
დაცული [[სრედი|სრედიანი]] სერიული ნომბრების შემქნელი (სხვა [[ლისპი|ლისპის]] დიალექტებთან განსხვავებით, Clojure-ს მოყვება <code>gensym</code> ფუნქცია ამისთვის):
 
<source lang="lisp">
(let [i (atom 0)]
(defn generate-unique-id
"Returns a distinct numeric ID for each call."
[]
(swap! i inc)))
</source>
 
ანონიმური <code>[http://java.sun.com/javase/6/docs/api/java/io/Writer.html java.io.Writer]</code>-ს [[ქვეკლასი]] რომელიც არაფერს არ წერლს, და [[მაკრო (საინფორმაციო მეცნიერება)|მაკრო]] რომელიც საბეჭდავ ფუნქციას "უჩინაჩარს" ხდის :
 
<source lang="lisp">
(def bit-bucket-writer
(proxy [java.io.Writer] []
(write [buf] nil)
(close [] nil)
(flush [] nil)))
 
(defmacro noprint
"Evaluates the given expressions with all printing to *out* silenced."
[& forms]
`(binding [*out* bit-bucket-writer]
~@forms))
 
(noprint
(println "Hello, nobody!"))
</source>
 
== სქოლიო ==
805

რედაქტირება