46 lines
1.2 KiB
Text
46 lines
1.2 KiB
Text
#include "share/atspre_staload.hats"
|
|
|
|
typedef pair =
|
|
'{
|
|
name = string,
|
|
value = string
|
|
}
|
|
|
|
fn
|
|
sort_pairs {n : int}
|
|
(pairs : &array (pair, n) >> _,
|
|
n : size_t n)
|
|
:<!wrt> void =
|
|
let
|
|
implement
|
|
array_quicksort$cmp<pair> (x, y) =
|
|
strcmp (x.name, y.name)
|
|
in
|
|
array_quicksort<pair> (pairs, n)
|
|
end
|
|
|
|
implement
|
|
main0 () =
|
|
let
|
|
val pairs_list : list (pair, 9) =
|
|
$list
|
|
('{name = "Warsaw", value = "Poland"},
|
|
'{name = "Prague", value = "Czech Republic"},
|
|
'{name = "London", value = "United Kingdom"},
|
|
'{name = "Paris", value = "France"},
|
|
'{name = "Madrid", value = "Spain"},
|
|
'{name = "Berlin", value = "Germany"},
|
|
'{name = "Rome", value = "Italy"},
|
|
'{name = "Moscow", value = "Russia"},
|
|
'{name = "Budapest", value = "Hungary"})
|
|
|
|
var pairs_array : @[pair][9]
|
|
val () = array_initize_list<pair> (pairs_array, 9, pairs_list)
|
|
|
|
val () = sort_pairs (pairs_array, i2sz 9)
|
|
|
|
var i : [i : nat | i <= 9] int i
|
|
in
|
|
for (i := 0; i <> 9; i := succ i)
|
|
println! (pairs_array[i].name, " -> ", pairs_array[i].value)
|
|
end
|