; Yorumlar, yorumlarımız, noktalı virgül ile başlıyor. ;; Genellikle ikili olarak kullanılıyorlar. ;; |--------------------------------| ; |--------- Genel Yapısı ---------| ;; |--------------------------------| ;; Boşluklar --whitespaces--, elementler için en yaygın ayıraçtır. "Mustafa" "Kemal" "ATATÜRK" ;; Fakat okunuşu arttırdığı gerekçesiyle "," (virgüller --commas--) EDN yorumlayıcısı tarafından görmezden gelinir ve boşluk olarak nitelendirilir. "Mustafa","Kemal","PAŞA" ;; Üstelik bu yenilikçi sözdizimsel kurala rağmen, {}, [] () gibi koleksiyon karakterlerini ayırmak için boşluğa ya da boşluğa çözümlenen virgüle ihtiyacınız yoktur. [["MUSTAFA"] ["KEMAL"] [[{"ATA" "ATATÜRK"}]]] ;; Üst düzey vektör elemanlarını birbirinden ayıran boşlukları da kaldırabilirsiniz. ;; Fakat bu size, okunması zor bir vektör dışında hiç bir şey vermeyecektir. ;; |--------------------------------| ; |-------- Atomik Yapılar --------| ;; |--------------------------------| ; Mantıksal Değerler ;; Mantıksal Doğru, çoğu teknolojide aynı gösterimi var. true ;; Mantıksal Yanlış. false ; Karakter Katarları ;; Karakter katarları, --SADECE-- çift tırnak ile belirtilebilir. "İzmirin dağlarında çiçekler açar!" ;; C, C++, Java v.b. gibi dillerin desteklediği kaçış sekanslarını da destekler. "Altın güneş orda sırmalar saçar.\nBozulmuş düşmanlar yel gibi kaçar." ;; Kaçış sekansları için bknz: $!$ ; Karakter Sabitleri ;; Karakter sabitleri önlerinde bir ters eğik çizgi ile temsil edilirler. \T \Ü \R \K ;; Üstelik, belirli kaçıl sekanslarının da karşılığı Karakter Sabiti olarak var. \newline \return ; Anahtar Kelimeler ;; Anahtar Kelimeler, önlerinde bir ":" iki nokta --colon-- :yımırta :kaşar :bıngıl ; Semboller ;; Semboller tanımlayıcıları temsil etmek için kullanılır. ;; "/" karakteri, Sembol Sabitlerinde isim-uzayı ayıracı olarak kullanılıyor. izmir/kızları ;; "mutfak" isim uzayındaki "ekmek-bıçağı" isimli sembole çözümlenir. banyo/fayans parke laminat ; Sayısal Değerler ;; Tam Sayı sabiti. 1991 ;; Kayan Noktalı Sabiti. 19.67 ; Listeler ;; Listeler, yukarıdaki temel tiplerin ardışıklanmasıdır. (bomba :bomba nokta \c \o \m) ; Vektörler ;; Vektörler bir bakıma Listelere benzeseler de, bir çok açıdan farklıdırlar. ;; Mesela Listenin aksine Vektörler, Rastgele Erişime imkan verir. [[] "şimdi" "asker"] ; Eşlemeler ;; Sıfır veya daha fazla Anahtar-Değer çifti kabul eder. ;; Not: Clojure Veri Yapıları Soyutlaması ile Eşlemeler de, teknik olarak ardışık olarak işlenebilir. {:canı :neler-ister? :uykuda "mevlam"} ;; Bu ve diğer tüm Veri Yapıları Homojendir, birbirilerini barındırabilir, kapsayabilir, içerebilirler. ;; Ayrıca okunurluk gibi farklı sebeplerle virgül kullanımında özgürsünüz. {{:id_ "129u391824981237981237" :kim "BEN"}, göster!} ; Kümeler ;; Kümeler eşsiz eleman barındıran bir yapıdır. ;; Matematikteki karşılığını veriyor dersek yanlış olmaz. #{:sen 3 milyar 750 milyon} ;; |--------------------------------| ; |------ Etiketli Elemanlar ------| ;; |--------------------------------| ;; EDN (Genişletilebilir Veri Notasyonu), # sembolü ile genişletilebilir. #benimuygulamam/bağlantı {:içerik "Y dakikada EDN Öğren" :url "https://learnxinyminutes.com/tr/edn" :tıhlama-aksiyonu yırrttılll!} ;; Ve bu yapıyı yorumlayacak bir de yapı gerekiyor. (defn ->bağlantı [props] (str "" (:içerik props) "")) ;; Bu örnekte yorumlayıcıya, basit bir fonksiyon veriyoruz. ;; `clojure.edn/read-string` aslında bir ayarlar Eşlemesi kabul ediyor. ;; (Bu tür fonksiyon genişlemeleri, Clojure ekosisteminde yaygındır.) (clojure.edn/read-string {:readers {'benimuygulamam/bağlantı ->bağlantı}} "#benimuygulamam/bağlantı {:içerik \"Y dakikada EDN Öğren\" :url \"https://learnxinyminutes.com/tr/edn\" :tıhlama-aksiyonu yırrttılll!}") ;=> "Y dakikada EDN Öğren" ;; |--------------------------------| ; |--- Ön Tanımlı Genişletmeler ---| ;; |--------------------------------| ; Tarih Etiketi ;; Bu etiket `inst` ön-ekinden sonra bir RFC-3339 formatında bir karakter katarı beklemektedir. #inst "2013-10-21T14:50:00+00:00" ; => Formatlanmış bir şekilde: 21/10/2013 14:50:00 ; UUID Etiketi ;; Bu etiket `uuid` ön-ekinden sonra bir UUID karşılığını karakter katarı olarak kabul eder. #uuid "11k12fae-7d3c-11k0-a765-0010ckke6hgk"