4.1. Examples
Greatest Common Prefix of a List of Strings
prefix_2 :: Eq a => [a] -> [a] -> [a] prefix_2 xs [] = [] prefix_2 [] xs = [] prefix_2 (a:as) (b:bs) = if a == b then a:(prefix_2 as bs) else [] -- Can also be expressed as: prefix_2_other xs ys = map fst . takeWhile (uncurry (==)) $ (zip xs ys) gc_prefix :: Eq a => [[a]] -> [a] gc_prefix [] = [] gc_prefix (a:as) = foldl prefix_2 a as |
Split
import List mysplit :: Eq a => [a] -> [a] -> [[a]] mysplit separator base = helper base where len = (length separator) helper [] = [[]] helper base = (if (isPrefixOf separator base) then []:(helper (drop len base)) else let ret = (helper (tail base)) in (head(base):head(ret)) : tail(ret) ) |