aboutsummaryrefslogtreecommitdiff
path: root/tests/bkpregex/str-impls/Str/String.hs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/bkpregex/str-impls/Str/String.hs')
-rw-r--r--tests/bkpregex/str-impls/Str/String.hs21
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/bkpregex/str-impls/Str/String.hs b/tests/bkpregex/str-impls/Str/String.hs
new file mode 100644
index 0000000..bba89de
--- /dev/null
+++ b/tests/bkpregex/str-impls/Str/String.hs
@@ -0,0 +1,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]