diff options
author | Daniel Gröber <dxld@darkboxed.org> | 2017-12-03 01:08:37 +0100 |
---|---|---|
committer | Daniel Gröber <dxld@darkboxed.org> | 2018-01-18 14:10:26 +0100 |
commit | 412148ce5f7911e818c6fe1e50981c2cd94858b1 (patch) | |
tree | 750ed1a5aaf56e3e5475ab9b6a7d9435e1617e14 /tests/bkpregex/str-impls | |
parent | 49dca6e8963a8fcd4e30d76d65068e9fa76a4a8d (diff) |
ghc-session: Add backpack test project
Diffstat (limited to 'tests/bkpregex/str-impls')
-rw-r--r-- | tests/bkpregex/str-impls/Str/ByteString.hs | 17 | ||||
-rw-r--r-- | tests/bkpregex/str-impls/Str/String.hs | 21 |
2 files changed, 38 insertions, 0 deletions
diff --git a/tests/bkpregex/str-impls/Str/ByteString.hs b/tests/bkpregex/str-impls/Str/ByteString.hs new file mode 100644 index 0000000..cd49fed --- /dev/null +++ b/tests/bkpregex/str-impls/Str/ByteString.hs @@ -0,0 +1,17 @@ +module Str.ByteString(module Data.ByteString.Char8, module Str.ByteString) where + +import Prelude hiding (length, null, splitAt) +import Data.ByteString.Char8 +import Data.ByteString + +type Str = ByteString + +splits :: Str -> [(Str, Str)] +splits s = fmap (\n -> splitAt n s) [0..length s] + +parts :: Str -> [[Str]] +parts s | null s = [[]] + | otherwise = do + n <- [1..length s] + let (l, r) = splitAt n s + fmap (l:) (parts r) 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] |