FP Cvičení 2
Jump to navigation
Jump to search
Types
- V interpretu GHCi lze použít příkaz
:info
k zjištění typu funkce nebo operátoru, zjistěte typ následujících elementů:+, sqrt, succ, max
- Zjistěte informace o typech následujících výrazů a vyhodnoťte je. K tomuto slouží příkaz
:type
. Je možné zapnout, aby interpret standardně vypsal typ výrazu. Toto jde příkazem:set +t
(tuto funkci lze vypnout:unset +t
).
5 + 8
3 * 5 + 8
2 + 4
sqrt 16
succ 6
succ 7
pred 9
pred 8
sin (pi / 2)
truncate pi
round 3.5
round 3.4
floor 3.7
ceiling 3.3
mod 10 3
odd 3
- Na přednáškách byly diskutovány některé základní datové typy:
Int, Double, Bool, Char
. Přiřaďte předcházejícím výrazům nejvhodnější z těchto základních datových typů. Váš tip je možné ověřit využitím operátoru::
. Například, pro první výraz předpokládejme, že jeho výsledný typ jeInt
. Můžeme manuálně přetypovat výsledek na celé číslo a toto ověřit.
Prelude> :type (5 + 8) :: Int
(5 + 8) :: Int :: Int
Pokud provedeme nekorektní konverzi na Char
, dostaneme následující výsledek.
Prelude> :type (5 + 8) :: Char
<interactive>:1:2: error:
* No instance for (Num Char) arising from a use of `+'
* In the expression: (5 + 8) :: Char
Pro tento výraz je platná konverze také na typ Double
.
Prelude> :type (5 + 8) :: Double
(5 + 8) :: Double :: Double
Simple functions
Implement following functions:
- Function that computes a factorial of a given number.
factorial :: Int -> Int
- Function that computes n-th number in Fibonacci sequence.
fib :: Int -> Int
- Function that checks if a year is a leap-year (divisible without remainder by 4 and it is not divisible by 100. If it is divisible by 400, it is a leap-year).
leapYear :: Int -> Bool
- Implement two functions that returns a maximum from 2 respectively 3 given parameters.
max2 :: Int -> Int -> Int
max3 :: Int -> Int -> Int -> Int
- Term combination is a selection of items from a collection, such that (unlike permutations) the order of elements in this selection does not matter. Compute the number of possible combinations if we are taking k things from the collection of n things.
combinations :: Int -> Int -> Int
- Implement a function that computes the number of solutions for a quadratic equation. This quadratic equation will be given using standard coefficients: a, b, c.
numberOfRoots :: Int -> Int -> Int -> Int
-- To simplify the solution, let construct can be used
f x y = let a = x + y
in a * a
- Implement a function that computes greatest common divider for two given numbers.
gcd' :: Int -> Int -> Int
- Implement a function that compute, if a given number is a prime number.
isPrime :: Int -> Bool