beautify code
This commit is contained in:
1 parent
174319293c
commit
c823775c0c
4 files changed
+22
-24
No files matched your search
+2
-2
@@ -1,7 +1,7 @@
|
||||
(ns book.cli
|
||||
(:require [book.match :refer [sell?]]
|
||||
[book.util :refer :all]
|
||||
[book.exchange :refer [empty-book create-exchange-for-security-2]]
|
||||
[book.exchange :refer [empty-book create-exchange-for-security]]
|
||||
[book.order] ;; for spec side effect
|
||||
[slingshot.slingshot :refer [try+ throw+]]
|
||||
[clojure.edn :as edn]
|
||||
@@ -42,7 +42,7 @@
|
||||
(defn -main [& args]
|
||||
(let [initial-book empty-book
|
||||
incoming-order-channel (chan)
|
||||
[trades-channel new-book-order-channel] (create-exchange-for-security-2 initial-book incoming-order-channel)]
|
||||
[trades-channel new-book-order-channel] (create-exchange-for-security initial-book incoming-order-channel)]
|
||||
(go (print-chan "trade > " trades-channel))
|
||||
(go (print-chan "order > " new-book-order-channel))
|
||||
(loop [order (read-order)]
|
||||
|
||||
+10
-12
@@ -4,43 +4,41 @@
|
||||
create-sell-book
|
||||
match-order-in-book]]
|
||||
[book.util :refer :all]
|
||||
[clojure.core.async :refer [chan go >!! <! <!! >! pub]]))
|
||||
[clojure.core.async :refer [chan go >! <! pub]]))
|
||||
|
||||
(def empty-book {:sell (create-sell-book) :buy (create-buy-book)})
|
||||
|
||||
|
||||
(defn process-abstract [order reference-book same-type-book]
|
||||
(let [[trades new-reference-book leftover-order] (match-order-in-book reference-book order)
|
||||
;ff (println ">>=" same-type-book (type same-type-book));;
|
||||
;ff (println ">>=" leftover-order (type leftover-order))
|
||||
new-same-type-book (if leftover-order (conj same-type-book leftover-order) same-type-book)]
|
||||
[new-reference-book new-same-type-book leftover-order trades]))
|
||||
|
||||
|
||||
(defn process-sell-order-2 [{sell-book :sell buy-book :buy} order]
|
||||
(defn process-sell-order [{sell-book :sell buy-book :buy} order]
|
||||
(let [[new-buy-book new-sell-book new-order trades] (process-abstract order buy-book sell-book)
|
||||
new-book {:sell new-sell-book :buy new-buy-book}]
|
||||
[new-book new-order trades]))
|
||||
|
||||
(defn process-buy-order-2 [{sell-book :sell buy-book :buy} order]
|
||||
(defn process-buy-order [{sell-book :sell buy-book :buy} order]
|
||||
(let [[new-sell-book new-buy-book new-order trades] (process-abstract order sell-book buy-book)
|
||||
new-book {:sell new-sell-book :buy new-buy-book}]
|
||||
[new-book new-order trades]))
|
||||
|
||||
(defn process-order-2 [book order]
|
||||
(defn process-order [book order]
|
||||
(if (sell? order)
|
||||
(process-sell-order-2 book order)
|
||||
(process-buy-order-2 book order)))
|
||||
(process-sell-order book order)
|
||||
(process-buy-order book order)))
|
||||
|
||||
(defn process-orders-2 [initial-book incoming-order-channel]
|
||||
(defn process-orders [initial-book incoming-order-channel]
|
||||
(let [trades-channel (chan)
|
||||
new-book-order-channel (chan)]
|
||||
(go (loop [order (<! incoming-order-channel) book initial-book]
|
||||
(let [[new-book new-order new-trades] (process-order-2 book order)]
|
||||
(let [[new-book new-order new-trades] (process-order book order)]
|
||||
(when (not (nil? new-order)) (>! new-book-order-channel new-order))
|
||||
(doseq [trade new-trades] (>! trades-channel trade))
|
||||
(recur (<!! incoming-order-channel) new-book))))
|
||||
(recur (<! incoming-order-channel) new-book))))
|
||||
[(pub trades-channel :book.order/type) (pub new-book-order-channel :type)]))
|
||||
|
||||
(def create-exchange-for-security-2 process-orders-2)
|
||||
(def create-exchange-for-security process-orders)
|
||||
|
||||
+2
-2
@@ -5,7 +5,7 @@
|
||||
[compojure.handler :refer [api]]
|
||||
[compojure.core :refer :all]
|
||||
[book.order] ;; for spec side effect
|
||||
[book.exchange :refer [create-exchange-for-security-2]]
|
||||
[book.exchange :refer [create-exchange-for-security]]
|
||||
[book.rest.util :refer [build-response build-response-body]]
|
||||
[clojure.spec.alpha :as s]
|
||||
[slingshot.slingshot :refer [try+ throw+]]
|
||||
@@ -33,7 +33,7 @@
|
||||
(defn create-exchange-api-for [sec-id]
|
||||
(let [initial-book empty-book
|
||||
incoming-order-channel (chan)
|
||||
[trades-publisher new-book-order-publisher] (create-exchange-for-security-2 initial-book incoming-order-channel)]
|
||||
[trades-publisher new-book-order-publisher] (create-exchange-for-security initial-book incoming-order-channel)]
|
||||
{:sec-id sec-id
|
||||
:incoming-order-channel incoming-order-channel
|
||||
:trades-publisher trades-publisher
|
||||
|
||||
Reference in new issue
Block a user