Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)
Paste
Pasted by wj ( 17 years ago )
type kodArt = string;
type nazwaArt = string;
type cena = int;
type rejestr = (kodArt*(nazwaArt*cena)) list;
val Rejestr = [ ("a1", ("ser bialy", 3)),
("a2", ("szprotki", 2)),
("a3", ("sok", 4))
];
type sztukiA = int; (*liczba zakupionych sztuk danego artykułu*)
type pozArt = sztukiA*kodArt; (*pozycja artykułu na liście zakupów*)
type zakupy = pozArt list; (*lista zakupow*)
val zakupy = [(4,"a2"),(1,"a1")];
type infoArt = sztukiA*nazwaArt*cena; (*informacja o artykule w racunku, gdzie cena jest kosztem łącznym*)
type infoLista = infoArt list; (*lista z informacjami o artykułach*)
type rachunek = infoLista*cena; (*lista j.w. i sumaryczny koszt zakupow*)
(*szukajArt:kodArt*rejestr->nazwaArt*cena;*)
exception BLEDNY_KOD_ARTYKULU
fun szukajArt(kA, (kA', naz_cen_A)::rej) = (*nazwa, cena*)
if kA=kA' then naz_cen_A
else szukajArt (kA,rej)
| szukajArt _ = raise BLEDNY_KOD_ARTYKULU;
fun utworzRachunek([], _) = ([],0) (*lista artykulow, suma*)
| utworzRachunek((sztA,kA)::zak, rej) =
let
val (nazA,cenA) = szukajArt(kA,rej)
val koszA = sztA*cenA
val (Rach, suma) = utworzRachunek(zak,rej)
in
((sztA,nazA,kosztA)::Rach, kosztA + suma)
end;
utworzRachunek([2,"a22")],Rejestr);
Revise this Paste