module E1 where
import Data.List
myMap :: (a -> b) -> [a] -> [b]
myMap f [] = undefined
myMap f (x:xs) = undefined
myOtherMap :: (a -> b) -> [a] -> [b]
myOtherMap f xs = [ undefined | undefined ]
myFilter :: (a -> Bool) -> [a] -> [a]
myFilter _ [] = undefined
myFilter p (x:xs) = undefined
myOtherFilter :: (a -> Bool) -> [a] -> [a]
myOtherFilter p xs = [ undefined | undefined ]
myZip = undefined
mystery :: (b -> c) -> (a, b) -> (a, c)
mystery = undefined
getLarger :: (Integer,Integer) -> Integer
getLarger (x, y) = undefined
divides :: Integer -> Integer -> Bool
divides n m = undefined
isPrime :: Integer -> Bool
isPrime n = undefined
data Form = P Integer | Neg Form | Conj Form Form
deriving (Eq,Ord,Show)
type Assignment = Integer -> Bool
satisfies :: Assignment -> Form -> Bool
satisfies v (P k) = v k
satisfies v (Neg f) = not (satisfies v f)
satisfies v (Conj f g) = satisfies v f && satisfies v g
variablesIn :: Form -> [Integer]
variablesIn = undefined
allAssignmentsFor :: [Integer] -> [Assignment]
allAssignmentsFor = undefined
isValid :: Form -> Bool
isValid f = undefined
tests :: [Bool]
tests = [ not . isValid $ P 1
, isValid $ Neg (Conj (P 1) (Neg (P 1)))
-- add your tests here
]