You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
bat/tests/syntax-tests/highlighted/Clojure/test.clj

59 lines
11 KiB
Clojure

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

(ns clojure-sample.core
 (:gen-class))
 
 (require '[clj-time.core :as t])
 (require '[clj-time.format :as f])
 
 ;; Product record
 (defrecord Product [id name available price])
 
 ;; Positional constructor
 (def product1 (->Product "1" "T-Shirt 1" true 15.00))
 
 ;; Map constructor
 (def product2 (map->Product
 {:id "2"
 :name "T-Shirt 2"
 :available true
 :price 20.00}))
 
 ;; Nested
 (def product3 {:id "1"
 :name "Product 1"
 :available true
 :sellers [{:id "1"
 :name "Seller 1"
 :stock 3},
 {:id 2
 :name "Seller 2"
 :stock 5}]})
 
 ;; Set
 (def categories #{"shirts" "shoes" "belts"})
 
 ;; List
 (def wishlist '(1 2))
 
 ;; Recursion
 (defn factorial [value] (cond
 (<= value 1) 1
 :else (* value (factorial (- value 1)))))
 
 (def basic-formatter (f/formatter "YYYY-MM-dd hh:mm:ss"))
 (defn now [] (f/unparse basic-formatter (t/now)))
 (defn log
 ([] (println (now) "No message"))
 ([message] (println (now) message)))
 
 (defn -main
 [& args]
 (println (:id product1))
 (println (:name product2))
 (println (:name (get (:sellers product3) 0)))
 (println (first categories))
 (println wishlist)
 (println (factorial 5))
 (log)
 (log "Message"))