-- kommentaar -- käivitamine käsurealt: rlwrap idris2 loeng1.idr a : Double a = 40.0 b : Double b = 30.0 c : Double c = sqrt (a*a + b*b) pyth : Double -> Double -> Double pyth x y = sqrt (x*x + y*y) fact1 : Int -> Int fact1 n = if n==0 then 1 else n * fact1 (n-1) -- Näidiste sobitamisel põhinev faktoriaal fact2 : Int -> Int fact2 0 = 1 fact2 n = n * fact2 (n-1) -- with-mustril põhinev faktoriaal ... fact3 : Int -> Int fact3 n with (n==0) fact3 n | True = 1 fact3 n | False = n * fact3 (n-1) -- alternatiivne with-mustril põhinev faktoriaal ... fact4 : Int -> Int fact4 n with (n) fact4 n | 0 = 1 fact4 n | _ = n * fact4 (n-1) -- Akumulaatorit kasutav, where-konstruktsiooniga fact5 : Int -> Int fact5 n = fact5' 1 n where fact5' : Int -> Int -> Int fact5' a 0 = a fact5' a m = fact5' (a*m) (m-1) -- Akumulaatorit kasutav, let-konstruktsiooniga fact6 : Integer -> Integer fact6 n = let fact6' : Integer -> Integer -> Integer fact6' = \ a, n => case n of 0 => a _ => fact6' (a*n) (n-1) in fact6' 1 n -- product funktsiooni ja listi kasutav faktoriaal fact7 : Int -> Int fact7 n = product [1..n]