DL
Size: a a a
DL
DF
(
(
DF
DF
DL
(
(type 3)
=> java.lang.Long
(type 9087098712098371209387123)
=> clojure.lang.BigInt
(type 0.0)
=> java.lang.Double
(
DF
(
DF
(type 3)
=> java.lang.Long
(type 9087098712098371209387123)
=> clojure.lang.BigInt
(type 0.0)
=> java.lang.Double
((apply 1 +) 2)
(
java.lang.Long cannot be cast to clojure.lang.IFn
(
DF
A
(def ZERO (fn [f x] x))
(def INC (fn [n] (fn [f x] (f (n f x)))))
(def PLUS (fn [n m ] (fn [f x] (n f (m f x)))))
(def ONE (INC ZERO))
(def TWO (INC ONE))
((PLUS ONE TWO) inc 0) ; => 3
DG
(defn find-smallest [list]Пытался сделать саму реализацию наиболее прозрачной и читабельной
(let [length (count list)]
(loop [smallest (list 0)
smallest-index 0
index 0]
(if (< index length)
(let [value (list index)]
(if (< value smallest)
(recur value index (inc index))
(recur smallest smallest-index (inc index))))
smallest-index))))
(defn drop-nth [list n]
(vec (concat (subvec list 0 n) (subvec list (inc n)))))
(defn selection-sort [list]
(loop [sorted []
indexes list]
(if (not-empty indexes)
(let [smallest-index (find-smallest indexes)
smallest (indexes smallest-index)]
(recur (conj sorted smallest) (drop-nth indexes smallest-index)))
sorted)))
(def my-list [5 3 6 2 10])
(println (selection-sort my-list))
VL
DL
DG