{- because of exercise 2 (the import of LeanCheck), start ghci via stack as follows: stack ghci template_09.hs (or put the Haskell code for exercise 2 into comments) -} -- Exercise 2 import Test.LeanCheck -- TODO: add necessary imports -- TODO: remove once imports are in place data Tree a = Tree -- TODO: define Listable instance instance Listable a => Listable (Tree a) where tiers = undefined -- Exercise 1 radius = 10 -- global radius computeVolume :: Double -> Double computeVolume rad = (4/3)*pi*rad^3 operationA :: Double -> Double operationA radius = computeVolume radius operationB :: Double operationB = computeVolume radius operationC :: Double -> Double operationC = computeVolume reverseList :: [a] -> [a] reverseList xs = let reverseListAux xs ys = case xs of (x:xs) -> reverseListAux xs (x:ys) _ -> ys in reverseListAux xs [] squareRootTwo :: Double -> Integer -> Double squareRootTwo guess n | n == 0 = guess | otherwise = squareRootTwo ((guess + 2/guess) / 2) (n-1) squareRootTwoA :: Double -> Integer -> Double squareRootTwoA guess n | n == 0 = guess | otherwise = squareRootTwoA ((guess + 2/guess) / 2) (n-1) where n=n squareRootTwoB :: Double -> Integer -> Double squareRootTwoB guess n | n == 0 = guess | otherwise = let n = n-1 in squareRootTwoB ((guess + 2/guess) / 2) n