regex-type-0.1.0.0: Type-level regular expressions

Copyright(C) 2016 Csongor Kiss
LicenseBSD3
MaintainerCsongor Kiss <kiss.csongor.kiss@gmail.com>
Stabilityexperimental
Portabilitynon-portable
Safe HaskellSafe
LanguageHaskell2010

Data.Type.Regex.ListUtils

Description

Various auixiliary type families that operate on type-level lists. Cherry picked from Data.List and lifted to the type-level.

Synopsis

Documentation

type family Nub xs :: [k] Source

Analogous to Data.List.nub

Equations

Nub `[]` = `[]` 
Nub (x : xs) = x : Nub (FilterOut x xs) 

type family IsNull xs Source

Analogous to Data.List.null

Equations

IsNull `[]` = True 
IsNull xs = False 

type family FilterOut x xs :: [k] Source

Analogous to `Data.List.filter (/= x) xs`

Equations

FilterOut x `[]` = `[]` 
FilterOut x (x : xs) = FilterOut x xs 
FilterOut x (y : xs) = y : FilterOut x xs 

type family Elem x xs Source

Analogous to Data.List.elem

Equations

Elem x `[]` = False 
Elem x (x : xs) = True 
Elem x (y : xs) = Elem x xs 

type family xs ++ ys Source

Analogous to Data.List.++

Equations

`[]` ++ ys = ys 
(x : xs) ++ ys = x : (xs ++ ys)