This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
fun printList(nil) = () | |
| printList(x::xs) = | |
(print(Int.toString(x)); | |
print("\n"); | |
printList(xs)); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
fun consset(a, nil) = nil | |
| consset(a, x::xs) = (a::x)::consset(a, xs); | |
fun powerset(nil) = [nil] | |
| powerset(x::xs) = | |
let | |
val p = powerset(xs) | |
in | |
p@consset(x, p) | |
end; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
fun power(x, 0) = 1 | |
| power(x, i) = x*power(x, i-1); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
fun padd(P, nil) = P | |
| padd(nil, Q) = Q | |
| padd((p:real)::ps, q::qs) = (p+q)::padd(ps, qs); | |
fun smult(nil, q) = nil | |
| smult((p:real)::ps, q) = (p*q)::smult(ps, q); | |
fun pmult(P, nil) = nil | |
| pmult(P, q::qs) = padd(smult(P, q), 0.0::pmult(P, qs)); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
val rec padd = fn | |
(P, nil) => P | |
| (nil, Q) => Q | |
| ((p:real)::ps, q::qs) => (p+q)::padd(ps, qs); | |
val rec smult = fn | |
(nil, q) => nil | |
| ((p:real)::ps, q) => (p*q)::smult(ps, q); | |
val rec pmult = fn |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
use "interleave.sml"; | |
fun perm nil = [nil] | |
| perm (x::xs) = List.concat (map (interleave x) (perm xs)); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
fun partition(p, nil) = (nil, nil) | |
| partition(p, x::xs) = | |
let | |
val (ys, zs) = partition(p, xs) | |
in | |
if p(x) then (x::ys, zs) | |
else (ys, x::zs) | |
end; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
fun reverse(nil) = nil | |
| reverse(x::xs) = reverse(xs)@[x]; | |
fun palindrome(x) = | |
let | |
val xchars = explode(x) | |
in | |
xchars = reverse(xchars) | |
end; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
fun padd(P, nil) = P | |
| padd(nil, Q) = Q | |
| padd((p:real)::ps, q::qs) = (p+q)::padd(ps, qs); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
fun nth(L, n) = | |
if n = 1 then hd(L) | |
else nth(tl(L), n-1); |