LCS (最長共通文字列)
http://www.agusa.i.is.nagoya-u.ac.jp/person/mzp/hiki/?exercise#l16 から。
ひねりも何もない、普通の関数。テストもろくにしてないのでもしかしたらダメかも。
lcs :: Eq a => [a] -> [a] -> [a] lcs [] _ = [] lcs _ [] = [] lcs (x:xs) ys = longer (x : (lcs xs $ dropWhile' (/=x) ys)) (lcs xs ys) longer l1 l2 = if length l1 < length l2 then l2 else l1 dropWhile' p l = if null ll then [] else tail ll where ll = dropWhile p l
Main> lcs "assault" "salty" "salt" Main>