aboutsummaryrefslogtreecommitdiff
path: root/tests/bkpregex/str-impls/Str/String.hs
blob: bba89de156218fd5693a840f98edb83303007098 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
module Str.String where

import Prelude hiding (null)
import qualified Prelude as P

type Str = String

null :: Str -> Bool
null = P.null

singleton :: Char -> Str
singleton c = [c]

splits :: Str -> [(Str, Str)]
splits [] = [([], [])]
splits (c:cs) = ([], c:cs):[(c:s1,s2) | (s1,s2) <- splits cs]

parts :: Str -> [[Str]]
parts [] = [[]]
parts [c] = [[[c]]]
parts (c:cs) = concat [[(c:p):ps, [c]:p:ps] | p:ps <- parts cs]