## Functorized interface

`module type StringType = sig ... end`

This signature lists few basic operations provided by all string types.

`module type PathType = sig ... end`

All implementations of `Path` functionality have this module type.

`module Make (S : StringType) : PathType with type ustring = S.t and type uchar = S.tchar`

Constructs path handling module for string-like type and its operations given in `S`.

`module OfString : PathType with type ustring = string and type uchar = char`

This implementation can be used with UTF-8, but encoding of used strings is not verified.