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 ulam = int * int
- exception DzieleniePrzezZero
- let ( ++ ) (a, b) (c, d) =
- if b = 0 || d = 0 then raise DzieleniePrzezZero
- else (a * d + b * c, b * d)
- let ( -- ) (a, b) (c, d) =
- if b = 0 || d = 0 then raise DzieleniePrzezZero
- else (a * d - b * c, b * d)
- let ( ** ) (a, b) (c, d) =
- if b = 0 || d = 0 then raise DzieleniePrzezZero
- else (a * c, b * d)
- let ( /./ ) (a, b) (c, d) =
- if b = 0 || d = 0 then raise DzieleniePrzezZero
- else (a, b) ** (d, c)
- let ( == ) (a, b) (c, d) =
- match b, d with
- | (0, _) -> raise DzieleniePrzezZero
- | (_, 0) -> raise DzieleniePrzezZero
- | _ -> (a * d = b * c)
- let rec NWD = function
- | (0, n) -> n
- | (m, n) -> NWD(n % m, m)
- let skroc (l, m) =
- let znak = if l * m < 0 then -1 else 1
- let al = abs l
- let am = abs m
- let d = NWD(al, am)
- in (znak * (al / d), am / d)
- let naString (l, m) =
- let znak = if l * m < 0 then "-" else ""
- let al = abs l
- let am = abs m
- let d = NWD(al, am)
- in znak + (System.Convert.ToString(al / d))
- + "/" + (System.Convert.ToString(am / d))
- type samochod = {marka: string; rocznik: int; pojemnosc: float}
- let malolitrazowy(x: samochod) =
- x.pojemnosc < 900.0
- type osoba = {imie: string; urodzony: int; adres: string}
- let starszy (k1: osoba, k2: osoba) =
- k1.urodzony < k2.urodzony
- type rej = {pojazd: samochod; kierowca: osoba}
- let wiekszaPojemnosc (s1: rej, s2: rej) =
- s1.pojazd.pojemnosc > s2.pojazd.pojemnosc
- type ulamek = {licznik: int; mianownik: int}
- [<EntryPoint>]
- let main argv =
- let q1 = (-2, 3)
- let q2 = (5, -10)
- let q3 = q1 ++ q2
- printfn "%A" <| q3
- printfn "%A" <| q1 -- q2
- let q4 = q2 ** q3
- printfn "%A" <| q4
- let q5 = q4 /./ q3
- printfn "%A" <| q5
- printfn "%b" <| (q1 == q2)
- printfn "%s" <| naString q4
- printfn "%s" <| naString q5
- (* rekordy *)
- let siena = {marka = "FIAT"; rocznik = 1987; pojemnosc = 1586.0}
- let maluch = {marka = "MALUCH"; rocznik = 1987; pojemnosc = 648.0}
- printfn "%b" <| malolitrazowy maluch
- let kier1 = {imie = "Maciek"; adres = "Dębica"; urodzony = 1996}
- let kier2 = {imie = "Dawid"; adres = "Nieznany"; urodzony = 1996}
- printfn "%b" <| starszy (kier2, kier1)
- let rej1 = {pojazd = siena; kierowca = kier1}
- let rej2 = {pojazd = maluch; kierowca = kier2}
- printfn "%A" <| wiekszaPojemnosc (rej1, rej2)
- printfn "%A" <| (5, 0) /./ (1, 2)
- 0 // return an integer exit cobe
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement