На этом шаге мы рассмотрим функции, используемые для работы с парами.
Укажем две основные функции.
1. Функция, возвращающая первый элемент кортежа, содержащего два элемента:
fst:: (a,b) -> a fst (a,b)
> fst (1,2) > fst ([-1],2) > fst ("qwe qwe",-22) 1 [-1] "qwe qwe"
2. Функция, возвращающая второй элемент кортежа, содержащего два элемента:
snd:: (a,b) -> b snd (a,b)
> snd (1,2) > snd (1,[-2]) > snd (11,"qwe qwe") 2 [-2] "qwe qwe"
Приведем небольшой демонстрационный пример.
{- Демонстрация использования кортежей для воз- -} {- вращения нескольких значений. -} {- Назначение функций определите самостоятельно -} {- -------------------------------------------- -} f:: Integer -> (Integer,Integer) f x = ((x `div` 10) `mod` 10, x `mod` 10) ----------------------------------------- maxMin:: (Int,Int) -> (Int,Int) maxMin (x,y) = if x>=y then (x,y) else (y,x) ------------------------------ -- Неудачные тестовые примеры: ------------------------------ test1 = f 234 == (3,4) test2 = maxMin (1,2) == (2,1)
На следующем шаге мы рассмотрим графическое представление списочных структур.