Skip to content

Instantly share code, notes, and snippets.

View kunishi's full-sized avatar

Takeo Kunishima kunishi

View GitHub Profile
fun printList(nil) = ()
| printList(x::xs) =
(print(Int.toString(x));
print("\n");
printList(xs));
fun proportional(x, i) =
if i=0
then 1
else x * proportional(x, i-1)
exception EmptyList;
fun reduce(F, nil) = raise EmptyList
| reduce(F, [a]) = a
| reduce(F, x::xs) = F(x, reduce(F, xs));
fun remove_second(L) =
if List.length(L) < 2 then nil else hd(L) :: tl(tl(L));
fun removeeven(nil) = nil
| removeeven(x::xs) =
if x mod 2 = 0
then removeeven(xs)
else x::removeeven(xs);
fun removex n nil = nil
| removex n (x::xs) =
(if n=x then (fn y => y)
else (fn y => (x::y))) (removex n xs);
fun replaceZero(L) =
map(fn n => if n<0 then 0 else n, L);
fun reverse(nil) = nil
| reverse(x::xs) = reverse(xs) @ [x];
fun reverse(nil) = nil
| reverse(x::xs) = reverse(xs) @ [x];
fun reverse L =
let
fun rev1 nil L = L
| rev1 (x::xs) L = rev1 xs (x::L)
in
rev1 L nil
end;