# Text I/O library proposal, first draft

**Ashley Yakeley
**
ashley@semantic.org

*Tue, 05 Aug 2003 18:01:21 -0700*

In article <200308050848.BAA15295@mail4.halcyon.com>, I wrote:
>* Actually, if one makes certain assumptions about encodings, you could
*>* get away with something like this:
*>*
*>* type Encoder base t = t -> [base]
*>* type Decoder base t = forall m. (Monad m) => m base -> m t
*>*
*>* Is this any less efficient? Probably not if you're writing your
*>* BlockRecoders in Haskell.
*
OK, for something a bit faster for coders written in C, how about:
type Encoder base t = UArray Int t -> UArray Int base;
data Decoder base t = forall s. MkDecoder
(UArray Int base -> Maybe s -> (s,UArray Int t));
--
Ashley Yakeley, Seattle WA