Haskell
Public
Recursive mathematical and list functions in Haskell
Defines various recursive functions for summation, power calculations, and list operations in Haskell, including sums over ranges, power computations, generating infinite lists, and simple list predicates.
Haskell
module Gyak05 where
sumTo :: Integer -> Integer
sumTo x
| x <= 0 = 0
| otherwise = x + sumTo (x-1)
sumBetweenHelper :: Integer -> Integer -> Integer
sumBetweenHelper n m
| n == m = n
| otherwise = sumBetweenHelper n (m-1) + m
sumBetween :: Integer -> Integer -> Integer
sumBetween n m
| n > m = sumBetweenHelper m n
| otherwise = sumBetweenHelper n m
sumSquaresFromTo :: Integer -> Integer -> Integer
sumSquaresFromTo n m
| n > m = 0
| n == m = n ^ 2
| otherwise = n^2 + sumSquaresFromTo (n+1) m
sqr :: Integer -> Integer
sqr x = x ^ 2
powerN :: Integer -> Integer -> Integer
powerN x 0 = 0
powerN x n = x * powerN x (n-1)
pwr :: Integer -> Integer -> Integer
pwr x n
| n == 0 = 1
| odd n = x * pwr x (n-1)
| otherwise = sqr (pwr x (n `div` 2))
pwr2 :: Integer -> Integer -> Integer
pwr2 x n
| n == 0 = 1
| odd n = x * pwr x (n-1)
| otherwise = pwr x (n `div` 2) * pwr x (n `div` 2)
--Listak
divByNHelper :: Integer -> Integer -> [Integer]
divByNHelper n x = ((n*x) : divByNHelper n (x+1))
divByN :: Integer -> [Integer]
divByN n = divByNHelper n 0
isNull :: [Integer] -> Bool
isNull [] = True
isNull _ = False
isNull2 :: [a] -> Bool
isNull2 (x:xs) = False
isNull2 _ = True
isNull3 :: [a] -> Bool
isNull3 (_:_) = False
isNull3 _ = True
hd :: [Integer] -> Integer
hd (x:xs) = x
thrd :: [Integer] -> Integer
thrd (x:y:z:xs) = z