Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Learn more about F# at http://fsharp.org
- // See the 'F# Tutorial' project for more help.
- type kodArt = string
- type nazwaArt = string
- type cena = int
- type rejestr = (kodArt * (nazwaArt * cena)) list
- let Rejestr = [
- ("a1", ("ser biały", 3));
- ("a2", ("szprotki", 2));
- ("a3", ("sok", 4));
- ("a4", ("szprotki",8));
- ];
- type sztukiA = int
- type pozArt = sztukiA * kodArt
- type zakupy = pozArt list
- let zakupy = [
- (4, "a2");
- (1, "a1") ];
- type infoArt = sztukiA*nazwaArt*cena
- type infoLista = infoArt list
- type rachunek = infoLista * cena
- exception BLEDNY_KOD_ARTYKULU
- let rec szukajArt u = function
- | [] -> raise BLEDNY_KOD_ARTYKULU
- | (k, (n, c)) :: baza_ogon
- -> if u = k then (n, c)
- else (szukajArt u baza_ogon);
- let rec czyElement x = function
- | y::ys -> x=y || (czyElement x ys)
- | [] -> false;;
- let rec utworzRachunek = function
- | ([], _) -> ([], 0)
- | ((sztA, kA)::zak, rej) ->
- let (nazA, cenA) = szukajArt kA rej
- let kosztA = sztA * cenA
- let (Rach, suma) = utworzRachunek(zak, rej)
- in ((sztA, nazA, kosztA)::Rach, kosztA + suma)
- let rec znajdzTowaryOTejSamejNazwieZRejestru (name:string) = function
- | [] -> []
- | (kod,(nazwa,cena)) :: ogon ->
- if nazwa = name then (kod,(nazwa,cena)) :: (znajdzTowaryOTejSamejNazwieZRejestru name ogon)
- else (znajdzTowaryOTejSamejNazwieZRejestru name ogon)
- [<EntryPoint>]
- let main argv =
- printfn "%A" argv
- //let artykul1 = szukajArt "a1" ([]:rejestr)
- let artykul2 = szukajArt "a3" Rejestr
- let rachunek1 = utworzRachunek([], Rejestr)
- let rachunek2 = utworzRachunek(zakupy, Rejestr)
- printfn "%A" rachunek2
- printfn "%A" <| znajdzTowaryOTejSamejNazwieZRejestru "szprotki" Rejestr
- 0 // return an integer exit code
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement