Clojure เป็นภาษาสไตล์ภาษา LISP และรันอยู่บน Java Virtual Machine.
ก่อนจะเริ่มต้นใช้เราจำเป็นต้องติดตั้งซอฟต์แวร์ในเครื่องเราก่อน ของที่ต้องใช้เลยคือ Java (เค้าแนะนำเวอร์ชัน LTS ตอนนี้คือ 8 และ 11) และ Clojure
วิธีติดตั้งดูจากหน้านี้ได้เลย https://clojure.org/guides/getting_started
จากนั้น ใช้คำสั่ง clojure
หรือ clj
เพื่อเข้าโปรแกรม REPL (คล้ายๆ Python interpreter หรือ JavaScript console)
จะได้หน้าตาประมาณนี้
user=> _
ตัวอย่างโค้ด
user=> (println "Hello, world!")
"Hello, world!"
nil
user=> 1
1
user=> (+ 1 1)
2
user=> (+ 1 2 3 4 5 6)
21
user=> (* (+ 1 2) (- 9 8))
6
เริ่มจากการเรียกฟังก์ชันก่อนเลย โดยใน Clojure จะมี form ในการเรียกฟังก์ชันคือ เริ่มต้นด้วยวงเล็บเปิด (
แล้วตามด้วยฟังก์ชันที่ต้องการรัน
ในตัวอย่างคือ +
*
และprintln
ทุกฟังก์ชันจะมีการ return ข้อมูลกลับมาเสมอแม้กระทั่ง println
แต่สังเกตให้ดีว่าค่าที่คืนกลับมานั้นคือ nil
ไม่ใช่ string "Hello, world!"
ที่เห็นมานั้นเป็น side effect
ที่เกิดจากการเรียกฟังก์ชัน println
Data structure
Clojure เองก็มี data structure เตรียมมาให้เราได้ใช้ เช่น vector
, list
, map
, set
-
vector
เป็น data structure ที่เก็บข้อมูลแบบเรียงลำดับก่อนหลัง -
list
เหมือน vector แต่กระบวนการจัดเก็บภายในแตกต่างกัน (เป็นแบบ linked list) -
map
เก็บข้อมูลแบบ key-value หรือ hash -
set
เก็บข้อมูลแบบไม่เรียงลำดับ และ ข้อมูลข้างในไม่ซ้ำกัน
user=> [1 2 3]
[1 2 3]
user=> (first [1 2 3])
1
user=> '(1 2 3) ; หรือ (list 1 2 3)
(1 2 3)
user=> {:one 1 :two 2}
{:one 1 :two 2}
user=> (get {:one 1 :two 2} :one)
1
user=> #{1 2 3}
#{1 3 2}
ฟังก์ชัน
แน่นอนว่า เราสามารถเขียนฟังก์ชันขึ้นมาใช้เองได้ นอกเหนือจากที่ Clojure มีมาให้ โครงสร้างของฟังก์ชันมีดังนี้
(defn function-name [param1 param2]
body)
ตัวอย่างฟังก์ชันอย่างง่าย
user=> (defn my-plus [param1 param2]
(+ param1 param2)) ; ค่าที่ return กลับไปคือบรรทัดสุดท้ายของส่วน body
#'user/my-plus
user=> (my-plus 10 20)
30
Top comments (0)