Skip to content

Instantly share code, notes, and snippets.

@sol2man2
Created November 17, 2015 13:21
Show Gist options
  • Save sol2man2/dc50069cd7e3e8b652a7 to your computer and use it in GitHub Desktop.
Save sol2man2/dc50069cd7e3e8b652a7 to your computer and use it in GitHub Desktop.

Revisions

  1. sol2man2 created this gist Nov 17, 2015.
    61 changes: 61 additions & 0 deletions template.hs
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,61 @@
    module Lab4 where

    ------------------------------------------------------------------------------------------------------------------------------
    -- RECURSIVE FUNCTIONS
    ------------------------------------------------------------------------------------------------------------------------------

    import Data.Char

    -- ===================================
    -- Ex. 0
    -- ===================================

    triangle :: Integer -> Integer
    triangle 0 = 0
    triangle n = n + triangle (n-1)

    -- ===================================
    -- Ex. 1
    -- ===================================

    count :: Eq a => a -> [a] -> Int
    count a [] = 0
    count a (x:xs) = (count a xs) + if a == x then 1 else 0

    xs = [1,2,35,2,3,4,8,2,9,0,5,2,8,4,9,1,9,7,3,9,2,0,5,2,7,6,92,8,3,6,1,9,2,4,8,7,1,2,8,0,4,5,2,3,6,2,3,9,8,4,7,1,4,0,1,8,4,1,2,4,56,7,2,98,3,5,28,4,0,12,4,6,8,1,9,4,8,62,3,71,0,3,8,10,2,4,7,12,9,0,3,47,1,0,23,4,8,1,20,5,7,29,3,5,68,23,5,6,3,4,98,1,0,2,3,8,1]
    ys = map (\x -> ((x + 1) * 3) ^ 3 - 7) xs

    poem = [ "Three Types for the Lisp-kings under the parentheses,"
    , "Seven for the Web-lords in their halls of XML,"
    , "Nine for C Developers doomed to segfault,"
    , "One for the Dark Lord on his dark throne"
    , "In the Land of Haskell where the Monads lie."
    , "One Type to rule them all, One Type to find them,"
    , "One Type to bring them all and in the Lambda >>= them"
    , "In the Land of Haskell where the Monads lie."
    ]

    -- ===================================
    -- Ex. 2
    -- ===================================

    euclid :: (Int, Int) -> Int
    euclid (x, y)
    | x == y = x
    | x >= y = euclid(x-y, y)
    | otherwise = euclid(x, y-x)

    -- ===================================
    -- Ex. 3
    -- ===================================

    funkyMap :: (a -> b) -> (a -> b) -> [a] -> [b]
    funkyMap f g xs = zipWith ($) (cycle [f, g]) xs


    h g f = (f . g) $ f
    fix = h fix

    f = \f n -> if (n == 0) then 1 else n * f (n - 1)

    k = fix $ f