mirror of
https://github.com/HigherOrderCO/Bend.git
synced 2024-10-26 14:05:36 +03:00
33 lines
790 B
Plaintext
33 lines
790 B
Plaintext
// Sorts a list
|
|
|
|
// sort : List -> List
|
|
(Sort []) = []
|
|
(Sort (List.cons x xs)) = (Insert x (Sort xs))
|
|
|
|
// Insert : U60 -> List -> List
|
|
(Insert v []) = (List.cons v [])
|
|
(Insert v (List.cons x xs)) = (SwapGT (> v x) v x xs)
|
|
|
|
// SwapGT : U60 -> U60 -> U60 -> List -> List
|
|
(SwapGT 0 v x xs) = (List.cons v (List.cons x xs))
|
|
(SwapGT _ v x xs) = (List.cons x (Insert v xs))
|
|
|
|
// Generates a random list
|
|
(Rnd 0 s) = List.nil
|
|
(Rnd n s) =
|
|
let s = (^ s (* s 0b10000000000000))
|
|
let s = (^ s (/ s 0b100000000000000000))
|
|
let s = (^ s (* s 0b100000))
|
|
(List.cons s (Rnd (- n 1) s))
|
|
|
|
// Sums a list
|
|
(Sum []) = 0
|
|
(Sum (List.cons x xs)) = (+ x (Sum xs))
|
|
|
|
(Main) =
|
|
let n = 10
|
|
(Sum (Sort (Rnd 0x100 n)))
|
|
|
|
// Use an argument from cli
|
|
// (Main n) = (Sum (Sort (Rnd 0x100 n)))
|