Clojure

Clojure
პარადიგმა ფუნქციური, მრავალპარადიგმული
გამოქვეყნების თარიღი 2007
შემქნელი რიჩ ჰიკეი
სტაბილური ვერსია 1.3 (23/09/2011)
ბოლო ვერსია 3.1
ტიპის მინიჭების დისციპლინა ძლიერი, დინამიური
ენების ზეგავლენით ქომონ ლისპი, სქემე, პროლოგი, ML, ჰასკელი, ერლანგი[1]
პლატფორმა JVM, CLR
ლიცენზია Eclipse Public License
საიტი http://clojure.org

Clojure (გამოითქმის როგორც "closure"[2]) არის ლისპისნაირი პროგრამირების ენის თანამედროვე დიალექტი, შექმნილია რიჩ ჰიკეის მიერ. იგი არის საერთო დანიშნულების პროგრამირების ენა, ინტერაქტიული პროგრამირების მხარდაჭერით, უბიძგებს ფუნქციური პროგრამირება სტილის გამოყენებას, და აადვილებს მრავალსრედიან პროგრამირებას.

Clojure-ი ფუნქციონირენს Java Virtual Machine-ზე, Common Language Runtime-ზე და აგრეთვე შესაძლოა მისი ჯავასკრიპტში გადაყვანა. როგორც სხვა ლისპისნაირი ენები, Clojure-ი ამუშავებს კოდს მონაცემებისნაირად და აქვს ძლიერი მაკრო სისტემა.

ისტორია

რიჩ ჰიკეი არის Clojure პროგრამირების ენის შემქნელი. Clojure-ამდე მან შექმნა dotLisp-ი, მსგავსი პროექტი რომელიც იყენებდა .NET პლატფორმას. ჰიკეი არის პირადი პროგრამისტი და კონსულტანტი 20 წლის გამოცდილობით. Clojure-ის შექმნას მოანდომა 2½ წელი, მან ეს სპონსორის გარეშე გააკეთა. როცა მზად იყო, თავისი ნაშრომი მის Common Lisp საზოგადოების ამხანაგებს ელ.წერილით გააცნო.

ფილოსოფია

ჰიკეიმ Clojure იმიტომ შექმნა რომ მას უნდოდა თანამედროვე ლისპი რომელსაც ექნებოდა ჯავას პლატფორმის მხარდაჭერა, და შექმნილია თანადროული შესრულებისთვის.[3][4]

სინტაქსი

როგორც სხვა ლისპის ტიპურ ენებში, Clojure-ის სინტაქსი არის დაყრდნობილი S-expression-ებზე რომლებიც არიან სინტატიკურად ანალიზირებულნი მონაცემთა სტრუქტურებში სანამ იგი კომპილირებული იქნება. Clojure-ი არის lisp-1, და მისი მიზანი არ არის რომ წყარო კოდი შეთავსებადი იყოს სხვა ლისპ დიალექტებთან.

მაგალითები

Hello world:

(println "Hello, world!")

ფუნქციის გამოცხადება:

(defn square [x]
  (* x x))

Hello World-ი გრაფიკული ინტერფეისით Java Swing ბიბლიოთეკის მეშვეობით:

(javax.swing.JOptionPane/showMessageDialog nil "Hello World" )

დაცული სრედიანი სერიული ნომრების შემქნელი (სხვა ლისპის დიალექტების მსგავსად, Clojure-ს მოყვება gensym ფუნქცია ამისთვის):

(let [i (atom 0)]
  (defn generate-unique-id
    "Returns a distinct numeric ID for each call."
    []
    (swap! i inc)))

ანონიმური java.io.Writer-ს ქვეკლასი რომელიც არაფერს არ წერს, და მაკრო რომელიც საბეჭდავ ფუნქციას "უჩინაჩარს" ხდის :

(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!"))

სქოლიო

რესურსები ინტერნეტში

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.