Haskell Platform proposal: Add case-insensitive

Roman Cheplyaka roma at ro-che.info
Sat Jan 12 13:08:46 CET 2013

* Henning Thielemann <lemming at henning-thielemann.de> [2013-01-12 12:40:22+0100]
> On Sat, 12 Jan 2013, Roman Cheplyaka wrote:
> >* Henning Thielemann <lemming at henning-thielemann.de> [2013-01-12 11:17:40+0100]
> >> However, if the package is included in the platform I would prefer
> >>to have it converted to plain Haskell 98 first, which should not be
> >>too hard.
> >
> >IMO, such requests shouldn't be made on per-package basis.
> Ok, I like to request this for the whole platform. :-)

This is easier to say than to do :)

E.g. here's the result of a quick grep of the bytestring source code.

  ./Data/ByteString.hs:import GHC.IO.Handle.Internals
  ./Data/ByteString.hs:import GHC.IO.Handle.Types
  ./Data/ByteString.hs:import GHC.IO.Buffer
  ./Data/ByteString.hs:import GHC.IO.BufferedIO as Buffered
  ./Data/ByteString.hs:import GHC.IO                   (unsafePerformIO, unsafeDupablePerformIO)
  ./Data/ByteString.hs:import GHC.IOBase
  ./Data/ByteString.hs:import GHC.Handle
  ./Data/ByteString.hs:import GHC.Prim                 (Word#)
  ./Data/ByteString.hs:import GHC.Base                 (build)
  ./Data/ByteString.hs:import GHC.Word hiding (Word8)
  ./Data/ByteString/Unsafe.hs:import GHC.Prim                 (Addr#)
  ./Data/ByteString/Unsafe.hs:import GHC.Ptr                  (Ptr(..))
  ./Data/ByteString/Builder/Prim/Internal/UncheckedShifts.hs:import GHC.Base
  ./Data/ByteString/Builder/Prim/Internal/UncheckedShifts.hs:import GHC.Word (Word32(..),Word16(..),Word64(..))
  ./Data/ByteString/Builder/Prim/Internal/UncheckedShifts.hs:import GHC.Word (uncheckedShiftRL64#)
  ./Data/ByteString/Builder/Internal.hs:import GHC.IO.Buffer (Buffer(..), newByteBuffer)
  ./Data/ByteString/Builder/Internal.hs:import GHC.IO.Handle.Internals (wantWritableHandle, flushWriteBuffer)
  ./Data/ByteString/Builder/Internal.hs:import GHC.IO.Handle.Types (Handle__, haByteBuffer, haBufferMode)
  ./Data/ByteString/Internal.hs:import GHC.Base                 (realWorld#,unsafeChr)
  ./Data/ByteString/Internal.hs:import GHC.IO                   (IO(IO))
  ./Data/ByteString/Internal.hs:import GHC.IOBase               (IO(IO),RawBuffer)
  ./Data/ByteString/Internal.hs:import GHC.IO                   (unsafeDupablePerformIO)
  ./Data/ByteString/Internal.hs:import GHC.IOBase               (unsafeDupablePerformIO)
  ./Data/ByteString/Internal.hs:import GHC.ForeignPtr           (mallocPlainForeignPtrBytes)
  ./Data/ByteString/Internal.hs:import GHC.ForeignPtr           (ForeignPtr(ForeignPtr))
  ./Data/ByteString/Internal.hs:import GHC.Base                 (nullAddr#)

> >There should be a policy regarding standard compliance of the platform
> >packages.
> >
> >The status quo is that a large part of the platform is not Haskell2010,
> >and converting it to Haskell2010 does not seem feasible.
> >
> >So the policy seems to be that the platform does not require the
> >packages to be H2010 (or H98, for that matter).
> That's sad and if this is wanted by most users, then it should be
> called GHC platform, not Haskell platform.

To be fair, yes, I think this is what is wanted by most user. HP is, by
design, something very practical, and in practical terms GHC is *the*
Haskell implementation, as of today.

(The reasons it's called Haskell platform are also very practical —
namely, marketing and newcomer-friendliness.)

I agree that this situation is sad, but package authors are the last
ones to blame. Instead of needlessly constraining the code we write, it
would be much better to update the Haskell standard to reflect the
state of modern Haskell.

But there doesn't seem to be much interest to work on the new version of
Haskell (see the recent thread on the haskell-prime mailing list).

Thus, today H98 and H2010 serve not as something that real code should
conform to, but rather as baselines to which extensions are applied.


More information about the Libraries mailing list