Last active
July 15, 2016 00:53
-
-
Save karad/240103f4adc9b0037a47235bb85f7678 to your computer and use it in GitHub Desktop.
RingとかのMiddlewareのしくみ解説にFizzBuzzを使ってみるサンプル
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;;; fizzbuzzで渡される一つ一つの数値はひとつのリクエストとみなすことができる | |
(defn wrap-request | |
[x] | |
{:request x | |
:result x}) | |
(defn wrap-result | |
[map] | |
(:result map)) | |
(defn wrap-fizz | |
[map] | |
(let [x (:request map)] | |
(if (= (mod x 3) 0) | |
(assoc map :result "fizz") | |
map))) | |
(defn wrap-buzz | |
[map] | |
(let [x (:request map)] | |
(if (= (mod x 5) 0) | |
(assoc map :result "buzz") | |
map))) | |
(defn wrap-fizzbuzz | |
[map] | |
(let [x (:request map)] | |
(if (and (= (mod x 3) 0) (= (mod x 5) 0)) | |
(assoc map :result "fizzbuzz") | |
map))) | |
(defn fizzbuzz-server | |
"fizz buzz サーバー本体" | |
[vec] | |
(map (fn [in] (-> in | |
wrap-request | |
wrap-fizz | |
wrap-buzz | |
wrap-fizzbuzz | |
wrap-result)) vec)) | |
;; -> (fizzbuzz-server (range 1 20)) | |
;; (1 2 "fizz" 4 "buzz" "fizz" 7 8 "fizz" "buzz" 11 "fizz" 13 14 "fizzbuzz" 16 17 "fizz" 19) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment