Skip to content

Instantly share code, notes, and snippets.

@martintrojer
Created January 28, 2012 16:57
Show Gist options
  • Save martintrojer/1695009 to your computer and use it in GitHub Desktop.
Save martintrojer/1695009 to your computer and use it in GitHub Desktop.
poems
(defn fib [n]
(loop [back1 1, back2 0, n n]
(cond
(= n 0) 0
(= n 1) (+ back1 back2)
:else (recur back2 (+ back1 back2) (- n 1)))))
let fib n =
let rec fib' back1 back2 = function
| 0 -> 0
| 1 -> back1 + back2
| n -> fib' back2 (back1 + back2) (n - 1)
fib' 1 0 n
(defn qsort [[pivot & xs]]
(when pivot
(let [{smaller true bigger false} (group-by #(< % pivot) xs)]
(lazy-cat (qsort smaller) [pivot] (qsort bigger)))))
(defn qsort [[pivot & xs]]
(when pivot
(let [smaller #(< % pivot)]
(lazy-cat (qsort (filter smaller xs))
[pivot]
(qsort (remove smaller xs))))))
let rec sort = function
| [] -> []
| h::t ->
let less, greater = List.partition ((>) h) t
sort less @ h :: sort greater
@alexander-yakushev
Copy link

I slightly modified the clojure version to make it look more like a Haskell one.

(defn qsort [[pivot & xs]]
   (when pivot
     (let [{smaller true greater false} (group-by #(< % pivot) xs)]
       (lazy-cat (qsort smaller) [pivot] (qsort greater)))))

@martintrojer
Copy link
Author

Re: alex Thanks man, very nice :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment