Advertisement
Guest User

Untitled

a guest
Aug 20th, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (ns clojure-noob.core
  2.     (:gen-class)
  3.     (:require [monger.core :as monger])
  4.     (:require [monger.collection :as mongo-collection])
  5.     (:import org.bson.types.ObjectId)
  6. )
  7.  
  8. (let [
  9.     mongo-connection (monger/connect {:host "localhost" :port 27017})
  10.     mongo-database (monger/get-db mongo-connection "clojure-noob")
  11. ]
  12.  
  13.     (def symmetric_body_parts
  14.         '(
  15.             {:name "eye" :size 1}
  16.             {:name "ear" :size 1}
  17.             {:name "shoulder" :size 3}
  18.             {:name "upper-arm" :size 3}
  19.             {:name "forearm" :size 3}
  20.             {:name "kidney" :size 1}
  21.             {:name "hand" :size 2}
  22.             {:name "knee" :size 2}
  23.             {:name "thigh" :size 4}
  24.             {:name "lower-leg" :size 3}
  25.             {:name "achilles" :size 1}
  26.             {:name "foot" :size 2}
  27.         )
  28.     )
  29.  
  30.     (def asymmetric_body_parts
  31.         '(
  32.             {:name "head" :size 3}
  33.             {:name "mouth" :size 1}
  34.             {:name "nose" :size 1}
  35.             {:name "neck" :size 2}
  36.             {:name "chest" :size 10}
  37.             {:name "back" :size 10}
  38.             {:name "abdomen" :size 6}
  39.         )
  40.     )
  41.  
  42.     (defn create_hobbit_body
  43.         []
  44.         (defn create_symmetric_parts
  45.             [part]
  46.             (defn create_half
  47.                 [half part]
  48.                 (hash-map
  49.                     :name (str half "-" (:name part))
  50.                     :size (:size part)
  51.                 )
  52.             )
  53.             [
  54.                 (create_half "left" part)
  55.                 (create_half "right" part)
  56.             ]
  57.         )
  58.  
  59.         (concat
  60.             asymmetric_body_parts
  61.             (reduce
  62.                 (fn [arg1 arg2] (concat (create_symmetric_parts arg2) arg1))
  63.                 []
  64.                 symmetric_body_parts
  65.             )
  66.         )
  67.     )
  68.  
  69.     (defn -main
  70.         [& args]
  71.         (doseq [i (create_hobbit_body)]
  72.             (mongo-collection/insert mongo-database "body_parts" {
  73.                 :_id (ObjectId.)
  74.                 :name (:name i)
  75.                 :size (:size i)
  76.             })
  77.         )
  78.         (monger/disconnect mongo-connection)
  79.     )
  80.  
  81. )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement