haskell-directory.git
18 years agoUpdate documentation for hWaitForInput
Simon Marlow [Tue, 7 Nov 2006 11:14:30 +0000 (11:14 +0000)]
Update documentation for hWaitForInput
See #972
Merge to 6.6 branch.

18 years agoUse unchecked shifts to implement Data.Bits.rotate
Samuel Bronson [Thu, 12 Oct 2006 12:55:53 +0000 (12:55 +0000)]
Use unchecked shifts to implement Data.Bits.rotate
This should get rid of those cases, maybe lower the size enough that the inliner will like it?

18 years agofix Haddock module headers
Ross Paterson [Mon, 6 Nov 2006 12:41:40 +0000 (12:41 +0000)]
fix Haddock module headers

18 years agofix example in docs
Ross Paterson [Mon, 6 Nov 2006 11:56:28 +0000 (11:56 +0000)]
fix example in docs

18 years agoAdd intercalate and split to Data.List
Josef Svenningsson [Tue, 24 Oct 2006 17:23:57 +0000 (17:23 +0000)]
Add intercalate and split to Data.List

18 years agoData.Generics.Basics is GHC-only
Ross Paterson [Thu, 2 Nov 2006 11:17:36 +0000 (11:17 +0000)]
Data.Generics.Basics is GHC-only

18 years ago#ifdef around non-portable Data.Generics.Basics
Malcolm.Wallace@cs.york.ac.uk [Thu, 2 Nov 2006 10:34:45 +0000 (10:34 +0000)]
#ifdef around non-portable Data.Generics.Basics

18 years agoAdd deriving Data to Complex
simonpj@microsoft [Wed, 1 Nov 2006 10:20:59 +0000 (10:20 +0000)]
Add deriving Data to Complex

18 years agominor clarification of RandomGen doc
Ross Paterson [Mon, 30 Oct 2006 23:08:42 +0000 (23:08 +0000)]
minor clarification of RandomGen doc

18 years agorearrange docs a bit
Ross Paterson [Mon, 30 Oct 2006 16:12:23 +0000 (16:12 +0000)]
rearrange docs a bit

18 years agoAdd intercalate and split to Data.List
Josef Svenningsson [Tue, 24 Oct 2006 17:23:57 +0000 (17:23 +0000)]
Add intercalate and split to Data.List

18 years agoExport pseq from Control.Parallel, and use it in Control.Parallel.Strategies
Simon Marlow [Fri, 27 Oct 2006 15:01:41 +0000 (15:01 +0000)]
Export pseq from Control.Parallel, and use it in Control.Parallel.Strategies

18 years ago`par` should be infixr 0
Simon Marlow [Fri, 27 Oct 2006 13:08:00 +0000 (13:08 +0000)]
`par` should be infixr 0
Alas, I didn't spot this due to lack of testing, and the symptom is
that an expression like x `par` y `seq z will have exactly the wrong
parallelism properties.  The workaround is to add parantheses.

I think we could push this to the 6.6 branch.

18 years agofix example in comment
Ross Paterson [Mon, 23 Oct 2006 16:39:25 +0000 (16:39 +0000)]
fix example in comment

18 years agoUse the new Any type for dynamics (GHC only)
simonpj@microsoft [Thu, 19 Oct 2006 16:04:08 +0000 (16:04 +0000)]
Use the new Any type for dynamics (GHC only)

18 years agoadd Data.Sequence to nhc98 build
Malcolm.Wallace@cs.york.ac.uk [Thu, 12 Oct 2006 13:52:00 +0000 (13:52 +0000)]
add Data.Sequence to nhc98 build

18 years agoRemove Data.FiniteMap, add Control.Applicative, Data.Traversable, and
Malcolm.Wallace@cs.york.ac.uk [Thu, 12 Oct 2006 09:56:05 +0000 (09:56 +0000)]
Remove Data.FiniteMap, add Control.Applicative, Data.Traversable, and
Data.Foldable to the nhc98 build.

18 years agoSTM invariants
tharris@microsoft.com [Sat, 7 Oct 2006 12:32:53 +0000 (12:32 +0000)]
STM invariants

18 years agoInline shift in GHC's Bits instances for {Int,Word}{,8,16,32,64}
Samuel Bronson [Mon, 9 Oct 2006 02:09:06 +0000 (02:09 +0000)]
Inline shift in GHC's Bits instances for {Int,Word}{,8,16,32,64}

18 years agoDon't create GHC.Prim when bootstrapping; we can't, and we don't need it
Ian Lynagh [Wed, 4 Oct 2006 16:53:55 +0000 (16:53 +0000)]
Don't create GHC.Prim when bootstrapping; we can't, and we don't need it

18 years agoData.ByteString: fix lazyness of take, drop & splitAt
Don Stewart [Thu, 5 Oct 2006 01:17:03 +0000 (01:17 +0000)]
Data.ByteString: fix lazyness of take, drop & splitAt

ByteString.Lazy's take, drop and splitAt were too strict when demanding
a byte string. Spotted by Einar Karttunen. Thanks to him and to Bertram
Felgenhauer for explaining the problem and the fix.

18 years agoFix syntax error that prevents building Haddock documentation on Windows
brianlsmith@gmail.com [Sun, 17 Sep 2006 01:35:30 +0000 (01:35 +0000)]
Fix syntax error that prevents building Haddock documentation on Windows

18 years agoHugs only: unbreak typeRepKey
Ross Paterson [Fri, 29 Sep 2006 10:27:43 +0000 (10:27 +0000)]
Hugs only: unbreak typeRepKey

18 years agomake hGetBufNonBlocking do something on Windows w/ -threaded
Simon Marlow [Wed, 27 Sep 2006 14:58:11 +0000 (14:58 +0000)]
make hGetBufNonBlocking do something on Windows w/ -threaded
hGetBufNonBlocking will behave the same as hGetBuf on Windows now, which
is better than just crashing (which it did previously).

18 years agoadd typeRepKey :: TypeRep -> IO Int
Simon Marlow [Wed, 27 Sep 2006 10:03:42 +0000 (10:03 +0000)]
add typeRepKey :: TypeRep -> IO Int
See feature request #880

18 years agofix header comment
Ross Paterson [Tue, 26 Sep 2006 13:58:43 +0000 (13:58 +0000)]
fix header comment

18 years agoAdd strict versions of insertWith and insertWithKey (Data.Map)
jeanphilippe.bernardy@gmail.com [Sun, 10 Sep 2006 16:24:43 +0000 (16:24 +0000)]
Add strict versions of insertWith and insertWithKey (Data.Map)

18 years agodoc tweaks, including more precise equations for evaluate
Ross Paterson [Sun, 10 Sep 2006 11:52:59 +0000 (11:52 +0000)]
doc tweaks, including more precise equations for evaluate

18 years agoSync Data.ByteString with stable branch
Don Stewart [Sat, 9 Sep 2006 05:01:11 +0000 (05:01 +0000)]
Sync Data.ByteString with stable branch

This patch:
    * hides the LPS constructor (its in .Base if you need it)
    * adds functions to convert between strict and lazy bytestrings
    * and adds readInteger

18 years agoTypeable1 instances for STM and TVar
Ross Paterson [Mon, 4 Sep 2006 23:14:25 +0000 (23:14 +0000)]
Typeable1 instances for STM and TVar

18 years agoremove obsolete Hugs stuff
Ross Paterson [Mon, 4 Sep 2006 22:39:44 +0000 (22:39 +0000)]
remove obsolete Hugs stuff

18 years agoCleaner isInfixOf suggestion from Ross Paterson
John Goerzen [Fri, 1 Sep 2006 14:36:54 +0000 (14:36 +0000)]
Cleaner isInfixOf suggestion from Ross Paterson

18 years agoNew function isInfixOf that searches a list for a given sublist
John Goerzen [Thu, 31 Aug 2006 15:15:56 +0000 (15:15 +0000)]
New function isInfixOf that searches a list for a given sublist

Example:

isInfixOf "Haskell" "I really like Haskell." -> True
isInfixOf "Ial" "I really like Haskell." -> False

This function was first implemented in MissingH as MissingH.List.contains

18 years agoBetter doc on Data.Map.lookup: explain what the monad is for
jeanphilippe.bernardy@gmail.com [Sun, 3 Sep 2006 13:34:40 +0000 (13:34 +0000)]
Better doc on Data.Map.lookup: explain what the monad is for

18 years agofix hDuplicateTo on Windows
Simon Marlow [Fri, 1 Sep 2006 15:00:16 +0000 (15:00 +0000)]
fix hDuplicateTo on Windows
deja vu - I'm sure I remember fixing this before...

18 years agomark nhc98 import hack
Ross Paterson [Thu, 31 Aug 2006 12:52:19 +0000 (12:52 +0000)]
mark nhc98 import hack

18 years agoremove some outdated comments
Simon Marlow [Thu, 31 Aug 2006 10:42:00 +0000 (10:42 +0000)]
remove some outdated comments

18 years agoimport Control.Arrow.ArrowZero to help nhc98's type checker
Malcolm.Wallace@cs.york.ac.uk [Thu, 31 Aug 2006 10:11:05 +0000 (10:11 +0000)]
import Control.Arrow.ArrowZero to help nhc98's type checker

18 years agoremove Text.Regex(.Posix) from nhc98 build
Malcolm.Wallace@cs.york.ac.uk [Thu, 31 Aug 2006 10:10:16 +0000 (10:10 +0000)]
remove Text.Regex(.Posix) from nhc98 build

18 years agoadd Data.Foldable.{msum,asum}, plus tweaks to comments
Ross Paterson [Wed, 30 Aug 2006 16:35:21 +0000 (16:35 +0000)]
add Data.Foldable.{msum,asum}, plus tweaks to comments

18 years agofix doc typo
Ross Paterson [Wed, 30 Aug 2006 13:41:23 +0000 (13:41 +0000)]
fix doc typo

18 years agoadd Data.Foldable.{for_,forM_} and Data.Traversable.{for,forM}
Ross Paterson [Wed, 30 Aug 2006 13:38:05 +0000 (13:38 +0000)]
add Data.Foldable.{for_,forM_} and Data.Traversable.{for,forM}

generalizing Control.Monad.{forM_,forM}

18 years agoMake length a good consumer
simonpj@microsoft [Mon, 8 May 2006 14:27:26 +0000 (14:27 +0000)]
Make length a good consumer

Make length into a good consumer.  Fixes Trac bug #707.

(Before length simply didn't use foldr.)

18 years agoAdd Control.Monad.forM and forM_
Don Stewart [Thu, 24 Aug 2006 08:11:18 +0000 (08:11 +0000)]
Add Control.Monad.forM and forM_

flip mapM_ is more and more common, I find. Several suggestions have
been made to add this, as foreach or something similar. This patch
does just that:

    forM  :: (Monad m) => [a] -> (a -> m b) -> m [b]
    forM_ :: (Monad m) => [a] -> (a -> m b) -> m ()

So we can write:

    Prelude Control.Monad> forM_ [1..4] $ \x -> print x
    1
    2
    3
    4

18 years agoHide internal module from haddock in Data.ByteString
Don Stewart [Mon, 28 Aug 2006 01:15:15 +0000 (01:15 +0000)]
Hide internal module from haddock in Data.ByteString

18 years agoadd advice on avoiding import ambiguities
Ross Paterson [Sun, 27 Aug 2006 17:04:07 +0000 (17:04 +0000)]
add advice on avoiding import ambiguities

18 years agoexpand advice on importing these modules
Ross Paterson [Sun, 27 Aug 2006 16:40:44 +0000 (16:40 +0000)]
expand advice on importing these modules

18 years agoadd Haddock marker
Ross Paterson [Sun, 27 Aug 2006 11:51:40 +0000 (11:51 +0000)]
add Haddock marker

18 years agoClarify how one hides Prelude.catch
Don Stewart [Sat, 26 Aug 2006 12:43:46 +0000 (12:43 +0000)]
Clarify how one hides Prelude.catch

User feedback indicated that an example was required, of how to hide
Prelude.catch, so add such an example to the docs

18 years agoWorkaround for OSes that don't have intmax_t and uintmax_t
Ian Lynagh [Fri, 25 Aug 2006 13:49:36 +0000 (13:49 +0000)]
Workaround for OSes that don't have intmax_t and uintmax_t
OpenBSD (and possibly others) do not have intmax_t and uintmax_t types:
    http://www.mail-archive.com/haskell-prime@haskell.org/msg01548.html
so substitute (unsigned) long long if we have them, otherwise
(unsigned) long.

18 years agoadd docs for par
Simon Marlow [Fri, 25 Aug 2006 11:06:10 +0000 (11:06 +0000)]
add docs for par

18 years agodocument minimal complete definition for Bits
Ross Paterson [Thu, 24 Aug 2006 14:05:04 +0000 (14:05 +0000)]
document minimal complete definition for Bits

18 years agoC regex library bits have moved to the regex-posix package
Simon Marlow [Thu, 24 Aug 2006 13:23:11 +0000 (13:23 +0000)]
C regex library bits have moved to the regex-posix package

18 years agoAdd shared Typeable support (ghc only)
Esa Ilari Vuokko [Wed, 23 Aug 2006 00:31:26 +0000 (00:31 +0000)]
Add shared Typeable support (ghc only)

18 years agothis should have been removed with the previous patch
Simon Marlow [Thu, 24 Aug 2006 12:12:23 +0000 (12:12 +0000)]
this should have been removed with the previous patch

18 years agoremove Text.Regx & Text.Regex.Posix
Simon Marlow [Thu, 24 Aug 2006 09:46:15 +0000 (09:46 +0000)]
remove Text.Regx & Text.Regex.Posix
These are subsumed by the new regex-base, regex-posix and regex-compat
packages.

18 years agoexplicitly tag Data.ByteString rules with the FPS prefix.
Don Stewart [Thu, 24 Aug 2006 04:13:26 +0000 (04:13 +0000)]
explicitly tag Data.ByteString rules with the FPS prefix.

18 years agoAdd spec rules for sections in Data.ByteString
Don Stewart [Thu, 24 Aug 2006 01:26:11 +0000 (01:26 +0000)]
Add spec rules for sections in Data.ByteString

18 years agoSync Data.ByteString with current stable branch, 0.7
Don Stewart [Wed, 23 Aug 2006 14:33:38 +0000 (14:33 +0000)]
Sync Data.ByteString with current stable branch, 0.7

18 years agoadd notes about why copyFile doesn't remove the target
Simon Marlow [Wed, 23 Aug 2006 09:50:59 +0000 (09:50 +0000)]
add notes about why copyFile doesn't remove the target

18 years agocopyFile: try removing the target file before opening it for writing
Simon Marlow [Tue, 22 Aug 2006 12:19:09 +0000 (12:19 +0000)]
copyFile: try removing the target file before opening it for writing

18 years agocopyFile: try removing the target file before opening it for writing
Simon Marlow [Tue, 22 Aug 2006 12:19:09 +0000 (12:19 +0000)]
copyFile: try removing the target file before opening it for writing

18 years agoadd alternative functors and extra instances
Ross Paterson [Mon, 21 Aug 2006 15:21:51 +0000 (15:21 +0000)]
add alternative functors and extra instances

* Alternative class, for functors with a monoid
* instances for Const
* instances for arrows

18 years agogenerate Haddock docs on all platforms
Simon Marlow [Mon, 21 Aug 2006 13:16:12 +0000 (13:16 +0000)]
generate Haddock docs on all platforms

18 years agoremove extra comma from import
Ross Paterson [Sat, 19 Aug 2006 17:39:54 +0000 (17:39 +0000)]
remove extra comma from import

18 years agofix docs for withC(A)StringLen
Ross Paterson [Fri, 18 Aug 2006 17:03:28 +0000 (17:03 +0000)]
fix docs for withC(A)StringLen

18 years agouse Haskell'98 compliant indentation in do blocks
Malcolm.Wallace@cs.york.ac.uk [Fri, 18 Aug 2006 13:08:10 +0000 (13:08 +0000)]
use Haskell'98 compliant indentation in do blocks

18 years agouse correct names of IOArray operations for nhc98
Malcolm.Wallace@cs.york.ac.uk [Fri, 18 Aug 2006 13:07:14 +0000 (13:07 +0000)]
use correct names of IOArray operations for nhc98

18 years agoadd mapMaybe and mapEither, plus WithKey variants
Ross Paterson [Thu, 17 Aug 2006 23:50:41 +0000 (23:50 +0000)]
add mapMaybe and mapEither, plus WithKey variants

18 years agoremove Text.Html from nhc98 build
Malcolm.Wallace@cs.york.ac.uk [Thu, 17 Aug 2006 13:55:02 +0000 (13:55 +0000)]
remove Text.Html from nhc98 build

18 years agoeliminate more HOST_OS tests
Ross Paterson [Tue, 15 Aug 2006 19:06:09 +0000 (19:06 +0000)]
eliminate more HOST_OS tests

18 years agoHugs only: disable unused process primitives
Ross Paterson [Sun, 13 Aug 2006 18:44:35 +0000 (18:44 +0000)]
Hugs only: disable unused process primitives

These were the cause of Hugs bug #30, I think, and weren't used by Hugs anyway.

18 years agomarkup fix to Data.HashTable
Ross Paterson [Sat, 12 Aug 2006 10:38:35 +0000 (10:38 +0000)]
markup fix to Data.HashTable

18 years agorevert removal of ghcconfig.h from package.conf.in
Ross Paterson [Sat, 12 Aug 2006 08:27:02 +0000 (08:27 +0000)]
revert removal of ghcconfig.h from package.conf.in

as it's preprocessed with -undef (pointed out by Esa Ilari Vuokko)

18 years agofix Data.HashTable for non-GHC
Ross Paterson [Fri, 11 Aug 2006 23:15:21 +0000 (23:15 +0000)]
fix Data.HashTable for non-GHC

18 years agoremove deprecated 'withObject'
Simon Marlow [Fri, 11 Aug 2006 15:23:50 +0000 (15:23 +0000)]
remove deprecated 'withObject'

18 years agoJan-Willem Maessen's improved implementation of Data.HashTable
Simon Marlow [Fri, 11 Aug 2006 15:10:24 +0000 (15:10 +0000)]
Jan-Willem Maessen's improved implementation of Data.HashTable
Rather than incrementally enlarging the hash table, this version
just does it in one go when the table gets too full.

18 years agoWarning police: Make some prototypes from the RTS known
sven.panne@aedion.de [Fri, 11 Aug 2006 14:46:29 +0000 (14:46 +0000)]
Warning police: Make some prototypes from the RTS known

18 years agoWarning police: Removed useless catch-all clause
sven.panne@aedion.de [Fri, 11 Aug 2006 14:22:08 +0000 (14:22 +0000)]
Warning police: Removed useless catch-all clause

18 years agoreduce dependency on ghcconfig.h
Ross Paterson [Fri, 11 Aug 2006 12:40:30 +0000 (12:40 +0000)]
reduce dependency on ghcconfig.h

The only remaining use is in cbits/dirUtils.h, which tests solaris2_HOST_OS

(Also System.Info uses ghcplatform.h and several modules import MachDeps.h
to get SIZEOF_* and ALIGNMENT_* from ghcautoconf.h)

18 years ago(non-GHC only) track MArray interface change
Ross Paterson [Thu, 10 Aug 2006 18:29:02 +0000 (18:29 +0000)]
(non-GHC only) track MArray interface change

18 years agomove Text.Html to a separate package
Simon Marlow [Thu, 10 Aug 2006 11:30:17 +0000 (11:30 +0000)]
move Text.Html to a separate package

18 years agobump version to 2.0
Simon Marlow [Thu, 10 Aug 2006 11:28:33 +0000 (11:28 +0000)]
bump version to 2.0

18 years agoRemove deprecated Data.FiniteMap and Data.Set interfaces
Simon Marlow [Wed, 9 Aug 2006 15:38:10 +0000 (15:38 +0000)]
Remove deprecated Data.FiniteMap and Data.Set interfaces

18 years agomove altzone test from ghc to base package
Ross Paterson [Wed, 9 Aug 2006 12:42:59 +0000 (12:42 +0000)]
move altzone test from ghc to base package

18 years agoremove unnecessary #include "ghcconfig.h"
Ross Paterson [Wed, 9 Aug 2006 12:38:12 +0000 (12:38 +0000)]
remove unnecessary #include "ghcconfig.h"

18 years agoChange the API of MArray to allow resizable arrays
Simon Marlow [Wed, 9 Aug 2006 10:05:48 +0000 (10:05 +0000)]
Change the API of MArray to allow resizable arrays
See #704

The MArray class doesn't currently allow a mutable array to change its
size, because of the pure function

  bounds :: (HasBounds a, Ix i) => a i e -> (i,i)

This patch removes the HasBounds class, and adds

  getBounds :: (MArray a e m, Ix i) => a i e -> m (i,i)

to the MArray class, and

  bounds :: (IArray a e, Ix i) => a i e -> (i,i)

to the IArray class.

The reason that bounds had to be incorporated into the IArray class is
because I couldn't make DiffArray work without doing this.  DiffArray
acts as a layer converting an MArray into an IArray, and there was no
way (that I could find) to define an instance of HasBounds for
DiffArray.

18 years agodeprecate this module.
Simon Marlow [Tue, 8 Aug 2006 10:07:08 +0000 (10:07 +0000)]
deprecate this module.

18 years agoadd traceShow (see #474)
Simon Marlow [Mon, 7 Aug 2006 15:55:45 +0000 (15:55 +0000)]
add traceShow (see #474)

18 years agoremove spurious 'extern "C" {'
Simon Marlow [Mon, 24 Jul 2006 16:02:58 +0000 (16:02 +0000)]
remove spurious 'extern "C" {'

18 years agoFix unsafeIndex for large ranges
Simon Marlow [Fri, 21 Jul 2006 10:02:25 +0000 (10:02 +0000)]
Fix unsafeIndex for large ranges

18 years agoImprove documentation of atomically
simonpj@microsoft [Fri, 14 Jul 2006 12:02:07 +0000 (12:02 +0000)]
Improve documentation of atomically

18 years agoAdd missing method genRange for StdGen (fixes #794)
simonpj@microsoft [Fri, 7 Jul 2006 15:19:01 +0000 (15:19 +0000)]
Add missing method genRange for StdGen (fixes #794)

MERGE TO STABLE

Trac #794 reports (correctly) that the implementation of StdGen
only returns numbers in the range (0..something) rather than
(minBound, maxBound), which is what StdGen's genRange claims.

This commit fixes the problem, by implementing genRange for StdGen
(previously it just used the default method).

18 years agodisambiguate uses of foldr for nhc98 to compile without errors
Malcolm.Wallace@cs.york.ac.uk [Tue, 11 Jul 2006 16:16:14 +0000 (16:16 +0000)]
disambiguate uses of foldr for nhc98 to compile without errors

18 years agomake Control.Monad.Instances compilable by nhc98
Malcolm.Wallace@cs.york.ac.uk [Tue, 11 Jul 2006 16:09:41 +0000 (16:09 +0000)]
make Control.Monad.Instances compilable by nhc98

18 years agobreakpointCond
Lemmih [Sat, 8 Jul 2006 05:55:28 +0000 (05:55 +0000)]
breakpointCond

18 years agoUNDO: Merge "unrecognized long opt" fix from 6.4.2
Simon Marlow [Wed, 5 Jul 2006 14:25:37 +0000 (14:25 +0000)]
UNDO: Merge "unrecognized long opt" fix from 6.4.2
This patch undid the previous patch, "RequireOrder: do not collect
unrecognised options after a non-opt".  I asked Sven to revert it, but
didn't get an answer.

See bug #473.

18 years agoAvoid strictness in accumulator for unpackFoldr
Don Stewart [Mon, 3 Jul 2006 09:18:06 +0000 (09:18 +0000)]
Avoid strictness in accumulator for unpackFoldr

The seq on the accumulator for unpackFoldr will break in the presence of
head/build rewrite rules. The empty list case will be forced, producing
an exception. This is a known issue with seq and rewrite rules that we
just stumbled on to.

18 years agoDisable unpack/build fusion
Don Stewart [Sun, 2 Jul 2006 08:39:13 +0000 (08:39 +0000)]
Disable unpack/build fusion

unpack/build on bytestrings seems to trigger a bug when interacting with
head/build fusion in GHC.List. The bytestring001 testcase catches it.

I'll investigate further, but best to disable this for now (its not
often used anyway).

Note that with -frules-off or ghc 6.4.2 things are fine. It seems to
have emerged with the recent rules changes.

18 years agoImport Data.ByteString.Lazy, improve ByteString Fusion, and resync with FPS head
Don Stewart [Sat, 1 Jul 2006 08:43:45 +0000 (08:43 +0000)]
Import Data.ByteString.Lazy, improve ByteString Fusion, and resync with FPS head

This patch imports the Data.ByteString.Lazy module, and its helpers,
providing a ByteString implemented as a lazy list of strict cache-sized
chunks. This type allows the usual lazy operations to be written on
bytestrings, including lazy IO, with much improved space and time over
the [Char] equivalents.