Tvor0zhok

Задачи Haskell

Feb 27th, 2021 (edited)
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.85 KB | None | 0 0
  1. import Data.List --см. задание №7
  2. import Data.Char --см. задание №10
  3.  
  4. --Задача №1
  5. {- log x - функция, которая подсчитывает In x
  6. logBase a b - функция, которая считает логарифм по основанию a от b
  7. Например: log 2.718 = 0.999896, logBase 2 8 = 3 -}
  8.  
  9. --Задача №2
  10. sumSquares :: Int -> Int -> Int
  11. sumSquares x y = x^2 + y^2
  12.  
  13. --Задача №3
  14. lenVec3 :: Double -> Double -> Double -> Double
  15. lenVec3 x y z = sqrt(x^2 + y^2 + z^2)
  16.  
  17. --Задача №4
  18. infixl 6 *+*
  19. x *+* y = x^2 + y^2
  20.  
  21. --Задача №5
  22.  
  23. --1-ый способ:
  24. signX1 :: Int -> Int
  25. signX1 x = if x < 0 then -1 else if x > 0 then 1 else 0
  26.  
  27. --2-ой способ:
  28. signX2 :: Int -> Int
  29. signX2 x
  30. | x > 0 = 1
  31. | x == 0 = 0
  32. | otherwise = -1
  33.  
  34. --Задача №6
  35. --См. тетрадь
  36.  
  37. --Задача №7
  38. {- Функция sort принадлежит модулю List
  39. Подключается модуль так: import List (см. выше) -}
  40.  
  41. --Задача №8
  42. infix 6 |-|
  43. x |-| y = abs(x - y)
  44.  
  45. --Задача №9
  46. {- logBase 4 $ min 20 $ 9 + 7 <=> logBase 4 ( min 20 (9 + 7) ) -}
  47.  
  48. --Задача №10
  49. {- toLower :: Char -> Char - функция переводит символы в нижний регистр
  50. Для работы с этой функцией требуется подключить модуль: import Data.Char
  51. Пример обращения: toLower 'U' => 'u' -}
  52.  
  53. --Задача №11
  54.  
  55. --1-ый способ:
  56. sumPair :: (Int , Int) -> Int
  57. sumPair (x, y) = x + y
  58.  
  59. --2-ой способ:
  60. sumPair2 :: (Int, Int) -> Int
  61. sumPair2 = uncurry (+)
  62.  
  63. --3-ий способ:
  64. sumPair3 :: (Int , Int) -> Int
  65. sumPair3 x = fst x + snd x
  66.  
  67. --Задача №12
  68.  
  69. --1-ый способ:
  70. extPair :: (Int, Int) -> [Int]
  71. extPair (x, y) = [x + y, x * y, x^2 + y^2]
  72.  
  73. --2-ой способ:
  74. extPair2 :: (Int, Int) -> [Int]
  75. extPair2 x = [f + s, f * s, f^2 + s^2]
  76. where f = fst x
  77. s = snd x
  78.  
  79. --Задача №13
  80.  
  81. --1-ый способ:
  82. flipPair :: (Int, Int) -> (Int, Int)
  83. flipPair (x, y) = (y, x)
  84.  
  85. --2-ой способ:
  86. flipPair2 :: (Int, Int) -> (Int, Int)
  87. flipPair2 x = (snd x, fst x)
  88.  
  89. --Задача №14
  90. makePair :: [Int] -> (Int, Int)
  91. makePair [x, y, z] = (x + y + z, x * y * z)
  92.  
  93. --Задача №15
  94. {- В терминале записываем:
  95. let add1 = \x -> x + 1
  96. В результате, мы задали анонимную функцию
  97.  
  98. Функция add1 увеличивает на 1 любое число, функция succ может
  99. увеличивать на 1 и переменные типа Char. Например, succ 'a' => 'b'
  100.  
  101. *Функция pred - прямая противоположность succ -}
Add Comment
Please, Sign In to add comment