cs320-lab-fold

Run Settings
LanguageHaskell
Language Version
Run Command
myfoldr :: [a] -> b -> (a -> b -> b) -> b myfoldr [] base _ = base myfoldr (x:xs) base f = f x (myfoldr xs base f) myfoldl :: [a] -> b -> (a -> b -> b) -> b myfoldl [] base _ = base myfoldl (x:xs) base f = myfoldl xs (f x base) f mymap :: [a] -> (a -> b) -> [b] mymap xs f = myfoldr xs [] (\x -> \y -> (f x) : y) myfilter :: [a] -> (a -> Bool) -> [a] myfilter xs f = myfoldr xs [] (\x -> \y -> if f x then x:y else y) mysplit :: [a] -> Int -> a -> [a] mysplit xs n s = myfoldr xs [] (\x -> \y -> if (length y >= n) && (length y + 1) `mod` (n + 1) == 0 then x : s : y else x : y) myperm :: (Eq a) => [a] -> [[a]] myperm [x] = [[x]] myperm xs = myfoldr xs [] (\x -> \xss -> (mymap (myperm $ myfilter xs (\m -> m /= x)) (\p -> x:p)) ++ xss) main = do print $ myfoldl [1,2,3,4] [] (\x -> \y -> x : y) print $ mymap [1,2,3,4] (\x -> x * x) print $ myfilter [1,2,3,4] (\x -> x < 3) print $ mysplit [1..17] 2 100 print $ myperm ['a','b','c']
Editor Settings
Theme
Key bindings
Full width
Lines