kommentering af sml program
please kommenter dette SML program, hvis I kan ... ? !* her loader vi de respektive moduler til senere brug i funktionerne *
load "Random";
load "List";
load "TextIO";
* danner en liste over de mulige navne man kan gætte på, og indsætter dem i en value "ordliste" *
val ordliste = ["anders","anton","allan","brian","birger","bjarne","chris","claus","claes","mikkel","morten","max","rasmus","robert","richard","anne","anita","anja","bolette","birthe","bodil","christina","cindy","charlotte","maja","mette","marie","rikke","ragnhild","ruth"];
* value som returnerer et tilfældigt tal, der skal bruges til at bestemme hvilket navn som skal gættes. *
val mingenerator = Random.newgen();
* her bruges output fra "mingenerator" til at bestemme navnet som skal gættes *
val place = Random.range (0,length (ordliste)) mingenerator;
* her bruges en explode funktion for at konvertere fra list til string *
val ord = explode(List.nth(ordliste,place)^"\n");
* dette er funktionen som sørger for text output til brugeren, hvad end det er indledende info eller et vinder svar osv. *
fun tale(a)=(TextIO.output(TextIO.stdOut,(a));TextIO.flushOut TextIO.stdOut);
* her afgøres hvilket output burgeren skal have afhængigt af om det er et herre eller damenavn *
fun kategori() = if place <= 14 then "\nDu skal gaette et herrenavn \n" else "\nDu skal gaette et kvindenavn \n";
infix i
fun (b:char) i [] = false
| (b:char) i (x::xs) = (b = x) orelse (b i (xs));
fun spil (0,hemmelig) = tale ("Det var ikke helt godt, det rigtigt navn er "^(implode ord))
| spil (n,hemmelig) = let val spoergsmaal = tale("Indtast bogstaver, du har i alt 5 gaet til at finde det rigtige navn." ^kategori())
val brugergaet = explode (TextIO.inputLine(TextIO.stdIn))
val resultat = implode (map (fn (x:char) => if x i brugergaet then x else #".") hemmelig)
in
tale(resultat); if brugergaet=hemmelig then tale "Du vandt!! Din heldige kartoffel" else spil (n-1,hemmelig)
end;
val _ = spil (5,ord);
