Advertisement
Vladi1442

Untitled

May 5th, 2022
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. main :: IO()
  2. main = do
  3.     print $ "hello world"
  4.    
  5. data Color = Yellow | Green | Blue | Red
  6.  
  7. data PeaNum - Succ PeaNum | Zero
  8.  
  9. data Calculation = Add Int Int | Sub Int Int | Mul Int Int | Div Int Int
  10.  
  11. calc :: Calculation -> Int
  12. calc (Add x y) = x + y
  13. calc (Sub x y) = x - y
  14. calc (Mul x y) = x * y
  15. calc (Div x y) = x / y
  16.  
  17. data PeaNum = Succ PeaNum | Zero
  18.  
  19. data Tree a = Leaf | Node (Tree a) a (Tree a)
  20.  
  21. four :: PeaNum
  22. four = Succ $ Succ $ Succ $ Zero
  23.  
  24. tree :: Tree Int
  25. tree = Node (Node Leaf 1 Leaf) 2 (Node (Node Leaf 3 Leaf) 4 Leaf)
  26.  
  27. decSort = reverse . sort
  28.  
  29. decSort = (\x -> reverse (sort x))
  30.  
  31. decSort x = reverse (sort x)
  32.  
  33. map2D :: (a -> b) -> [[a]] -> [[b]]
  34. map2D = map . map
  35.  
  36. -- these functions down there are equivalent to map2D
  37.  
  38. map2D = (\f1 xs -> map f1 xs) . (\f2 ys -> map f2 ys)
  39.  
  40. map2D = (\x -> (\f1 xs -> map f1 xs) ((\f2 ys -> map f2 ys) x))
  41.  
  42. map2D x = (\f1 xs -> map f1 xs) ((\f2 ys -> map f2 ys) x)
  43.  
  44. map2D x = (\f1 xs -> map f1 xs) ((\ys -> map x ys)
  45.  
  46. map2D x = (\xs -> map (\ys -> map x ys) xs)
  47.  
  48. map2D f xs = map (\ys -> map f ys) xs
  49.  
  50. -- btw, map takes the function and the list (so we have map2D f xs, it's clear)
  51.  
  52. f xs = map (\x -> x + 1) (filter (\x -> x > 1) xs)
  53.  
  54. data List = Empty | Cons Int (List)
  55.  
  56. data List a = Empty | Cons a (List)
  57.  
  58. toHList :: List a -> [a]
  59. toHList Empty       = []
  60. toHList (Cons x xs) = x : toHList xs
  61.  
  62. map' f [] = []
  63. map' f (x:xs) = f x : map' f xs
  64.  
  65. data Error a = Error | Ok a
  66.  
  67. safeDivide :: Error Int -> Error Int -> Error Int
  68. safeDivide (Error) _ = Error
  69. safeDivide _ (Error) = Error
  70. safeDivide (Ok a) (Ok 0) = Error
  71. safeDivide (Ok a) (Ok b) = Ok (a `div` b)
  72.  
  73.  
  74. data Person = Person String Int (Int, Int, Int) -- Person Name Age ID
  75.  
  76. getDateOrBirth (Person _ _ (dob) = dob)
  77.  
  78. -- algebric types always starts with data (тип с определен брой компоненти)
  79.  
  80. data Day = Monday | Tuesday | Wendsday | Thursday | Friday | Saturday | Sunday
  81.  
  82. data Temp = Cold | Hot
  83.  
  84. data Season = Spring | Summer | Autumn | Winter
  85.  
  86. weather :: Season -> Temp
  87. weather Spring = Hot
  88. weather _ = Cold
  89.  
  90. data People  = Person Name Age
  91. -- тук Name е синоним на String, а Age е синоним на Int
  92. type Name = String
  93. type Age = Int
  94.  
  95. -- example for values of type People
  96. -- Person "Aunt Jemima" 77
  97. -- Person "Ronnie" 14
  98.  
  99. data Shape = Circle Float | Rectangle Float Float
  100.  
  101. -- Circle 3.0
  102. -- Rectangle 45.9 87.6
  103.  
  104. isRound :: Shape -> Bool
  105. isRound (Circle _) = True
  106. isRound (Rectangle _ _) = Flase
  107.  
  108. area :: Shape -> Float
  109. area (Circle r) = pi*r*r
  110. area (Rectangle a b) = a*b
  111.  
  112.  
  113. data Season = Spring | Summer | Autumn | Winter
  114.                deriving (Eq, Ord, Enum, Show, Read)
  115.  
  116. data Shape = Circle Float |
  117.            Rectangle Float Float
  118.            deriving (Eq, Show, Read)
  119.  
  120. data Expr = Lit Int |
  121.            Add Expr Expr |
  122.            SUb Expr Expr
  123.    
  124. -- a little bit about trees, i am not sure if this is included in my homework, but i'll write it, nothing costs
  125.  
  126. date NTree = NilT |
  127.             Node Int NTree NTree
  128.  
  129. sumTree, depth :: NTree -> Int
  130.  
  131. sumTree NilT           = 0
  132. sumTree (Node n t1 t2) = n + sumTree t1 + sumTree t2
  133.  
  134. depth NilT = 0
  135. depth (Node n t1 t2) = 1 + max (depth t1) (depth t2)
  136.  
  137. occurs :: NTree -> Int -> Int
  138.  
  139. occurs NilT p = 0
  140. occurs (Node n t1 t2) p
  141.     | n == p    = 1 + occurs t1 p + occurs t2 p
  142.     | otherwise = occurs t1 p + occurs t2 p
  143.  
  144.  
  145. data Person = Adult Name Address Biog |
  146.               Child Name
  147.  
  148. data Biog = Parent String [Person] |
  149.             NonParent String
  150.  
  151. showPerson (Adult nm ad bio)
  152.     = show nm ++ show ad ++ showBiog bio
  153. ...
  154.  
  155. showBiog (Parent st parList)
  156.     = st ++ concat (map showPerson parList)
  157. ...
  158.  
  159.  
  160. data Pairs a = Pr a a
  161.  
  162. -- Pr 2 3 :: Pairs Int
  163. -- Pr [] [3] :: Pairs [Int]
  164. -- Pr [] [] :: Pairs [a]
  165.  
  166.  
  167. equalPair :: Eq a => Pairs a -> Bool
  168. equalPair (Pr x y) = (x == y)
  169.  
  170. data List a = NilList | Cons a (List a)
  171.                 deriving (Eq, Show, Read)
  172.    
  173.    
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement