Add Clojure syntax test.

This commit is contained in:
Felipe Garcia 2020-10-10 14:28:31 -03:00 committed by David Peter
parent f10c8ce25e
commit 46004001cb
2 changed files with 116 additions and 0 deletions

View File

@ -0,0 +1,58 @@
(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"))
 

View File

@ -0,0 +1,58 @@
(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"))