Advertisement
Guest User

Untitled

a guest
Mar 17th, 2022
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.49 KB | None | 0 0
  1. -- | all decompositions of a string into multi-part (nonempty) pieces
  2. -- >>> parts "abc"
  3. -- [["abc"],["a","bc"], ["ab","c"], ["a","b","c"]]
  4. -- must not use drop, take, splitAt. must make use of list monad (listcomp/do notation)
  5.  
  6. parts :: [a] -> [[[a]]]
  7. parts [] = []
  8. parts [x] = [[[x]]]
  9. parts l@(x:y:[]) = [[l], [[x], [y]]]
  10. parts l@(x:xs) = addElem (parts xs) x
  11.  
  12. addElem :: [[[a]]] -> a -> [[[a]]]
  13. addElem [] e = [[[e]]]
  14. addElem l@(x:xs) e = [[e] : listOfStrings| listOfStrings <- l]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement