Задание № 1:
Приведите пример нетривиальных отношений, принадлежащих следующему типу на функциональном языке программирования haskell.
(([Double],[Bool]),[Integer])
Результат:Prelude>:set +t
Prelude>(([1.2,5.3],[True,False]),[12,18])
(([1.2,5.3],[True,False]),[12,18]) :: (([Double],[Bool]),[Integer])
(требование нетривиальности в данном случае означает, что встречающиеся в выражениях списки должны содержать больше одного элемента) Prelude>(([1.2,5.3],[True,False]),[12,18])
(([1.2,5.3],[True,False]),[12,18]) :: (([Double],[Bool]),[Integer])
Задание № 2:
Функция isParallel, возвращающая True(истину), если два отрезка, концы которых задаются в аргументах функции, параллельны (или лежат на одной прямой). Например, значение выражения isParallel (1,1) (2,2) (2,0) (4,2) должно быть равно True, поскольку отрезки (1,1) – (2,2) и (2,0) – (4,2) параллельны.
Исходный код этой программы, который расположен ниже, необходимо напечатать в блокнот(notebook) и сохранить с расширением ".hs", в нашем случае это "laba1.hs".
isParallel :: Integer -> Integer -> Integer -> Integer -> Integer -> Integer -> Integer -> Integer -> Bool
isParallel x1 y1 x2 y2 x3 y3 x4 y4 = if (((x1-x2)*(y3-y4)-(y1-y2)*(x3-x4)) == 0) then True else False
Результат:isParallel x1 y1 x2 y2 x3 y3 x4 y4 = if (((x1-x2)*(y3-y4)-(y1-y2)*(x3-x4)) == 0) then True else False
Prelude> :load "c:\\haskell\\laba1.hs"
Reading file "c:\haskell\laba1.hs":
Hugs session for:
C:\Haskell\lib\Prelude.hs
c:\haskell\laba1.hs
Main> isParallel 1 1 2 2 2 0 4 2
True :: Bool
Main> isParallel 1 1 2 0 2 0 4 0
False :: Bool
Дополнительное задание:Reading file "c:\haskell\laba1.hs":
Hugs session for:
C:\Haskell\lib\Prelude.hs
c:\haskell\laba1.hs
Main> isParallel 1 1 2 2 2 0 4 2
True :: Bool
Main> isParallel 1 1 2 0 2 0 4 0
False :: Bool
Функция, определяющая максимум из 3-х чисел:
maxChislo :: Integer -> Integer -> Integer -> Integer
maxChislo x1 x2 x3 = if ((x1>x2)&&(x1>x3)) then x1
else if ((x2>x1)&&(x2>x3)) then x2 else x3
Результат:maxChislo x1 x2 x3 = if ((x1>x2)&&(x1>x3)) then x1
else if ((x2>x1)&&(x2>x3)) then x2 else x3
Main> maxChislo 1 7 5
7 :: Integer
7 :: Integer
Если вам нравится то, что мы пишем, пожалуйста, нажмите на интересующую вас рекламу сбоку, сверху, или сразу после статьи. Будет стимул писать лучше и чаще. Хорошего вам дня.