Changes between Version 8 and Version 9 of Prelude


Ignore:
Timestamp:
Feb 22, 2006 4:31:42 PM (10 years ago)
Author:
malcolm.wallace@…
Comment:

flesh out a concrete proposal for a minimal prelude

Legend:

Unmodified
Added
Removed
Modified
  • Prelude

    v8 v9  
     1[[PageOutline]]
    12= Shrink the Prelude =
    23
     
    7374 Monad::
    7475   mapM, mapM_, sequence, sequence_, (=<<)
     76
     77= Concrete proposal for a minimal Prelude =
     78
     79Here is a concrete proposal for a truly minimal Prelude.  Let the Prelude itself contain only entities that relate purely to functions - no other datatypes.
     80
     81{{{
     82module Prelude
     83    ( (->)
     84    , (.)
     85    , ($)
     86    , ($!)
     87    , flip
     88    , id
     89    , const
     90    , error
     91    , undefined
     92    , seq
     93    , asTypeOf
     94    )
     95}}}
     96
     97Everything else that is currently in the Haskell'98 Prelude is re-distributed across a variety of small modules. Where a syntactic desugaring rule currently uses an entity from the Prelude, the new interpretation is that it uses whatever binding of that entity is in scope - if there is no such entity in scope, it is an error.  For compatibility, we define a wrapper module called Prelude.Standard which re-exports the original Haskell'98 Prelude:
     98
     99{{{
     100module Prelude.Standard
     101    ( module Prelude
     102    , module Prelude.Num
     103    , module Prelude.Comparison
     104    , module Prelude.Monad
     105    , module Prelude.List
     106    , module Prelude.Maybe
     107    , module Prelude.Either
     108    , module Prelude.Tuple
     109    , module Prelude.IO
     110    , module Prelude.Text
     111    )
     112}}}
     113
     114And here are the individual fragments:
     115
     116{{{
     117module Prelude.Num
     118    ( data Natural(..)
     119    , data Int(..)
     120    , data Int8(..)
     121    , data Int16(..)
     122    , data Int32(..)
     123    , data Int64(..)
     124    , data Word8(..)
     125    , data Word16(..)
     126    , data Word32(..)
     127    , data Word64(..)
     128    , data Integer(..)
     129    , data Float(..)
     130    , data Double(..)
     131    , type Rational
     132    , class Integral(..)
     133    , class Num(..)
     134    , class Fractional(..)
     135    , class Real(..)
     136    , class RealFrac(..)
     137    , class Floating(..)
     138    , class RealFloat(..)
     139    , gcd, lcm
     140    , fromIntegral, realToFrac
     141    , numericEnumFrom, numericEnumFromTo, numericEnumFromThen
     142    , numericEnumFromThenTo
     143    , (^), (^^), (%)
     144    , even, odd, subtract
     145    )
     146
     147module Prelude.Comparison
     148    ( data Bool(..)
     149    , data Ordering(..)
     150    , class Eq(..)
     151    , class Ord(..)
     152    , class Enum(..)
     153    , class Bounded(..)
     154    , otherwise
     155    , (&&), (||), not, until
     156    )
     157
     158module Prelude.Monad
     159    ( class Functor(..)
     160    , class Monad(..)
     161    , mapM, mapM_, sequence, sequence_, (=<<)
     162    )
     163
     164module Prelude.List
     165    ( data [](..)
     166    , all, and, any, (++), break, concat, concatMap, cycle, drop, dropWhile
     167    , elem, filter, foldl, foldl1, foldr, foldr1, head, (!!), init, iterate
     168    , last, length, lines, lookup, map, maximum, minimum, notElem, null
     169    , or, product, repeat, replicate, reverse, scanl, scanl1, scanr, scanr1
     170    , span, splitAt, sum, tail, take, takeWhile, unlines, unwords, words
     171    )
     172
     173module Prelude.Maybe
     174    ( data Maybe(..)
     175    , maybe
     176    )
     177
     178module Prelude.Either
     179    ( data Either(..)
     180    , either
     181    )
     182
     183module Prelude.Tuple
     184    ( data ()(..)
     185    , data (,)(..)
     186    , data (,,)(..)
     187    , data (,,,)(..)
     188    , data (,,,,)(..)
     189    , data (,,,,,)(..)
     190    , data (,,,,,,)(..)
     191    , data (,,,,,,,)(..)
     192    , data (,,,,,,,,)(..)
     193    , data (,,,,,,,,,)(..)
     194    , data (,,,,,,,,,,)(..)
     195    , data (,,,,,,,,,,,)(..)
     196    , data (,,,,,,,,,,,,)(..)
     197    , data (,,,,,,,,,,,,,)(..)
     198    , data (,,,,,,,,,,,,,,)(..)
     199    , fst, snd
     200    , unzip, unzip3, zip, zip3, zipWith, zipWith3
     201    , curry, uncurry
     202    )
     203
     204module Prelude.IO
     205    ( data IO
     206    , data IOError(..)
     207    , data FilePath
     208    , ioError, userError, catch
     209    , print
     210    , putChar, putStr, putStrLn
     211    , getChar, getLine, getContents, interact
     212    , readFile, writeFile, appendFile, readIO, readLn
     213    )
     214
     215module Prelude.Text
     216    ( data Char(..)
     217    , type String
     218    , class Read(..)
     219    , class Show(..)
     220    , type ReadS
     221    , type ShowS
     222    , read, reads, readParen, lex
     223    , shows, showString, showParen, showChar
     224    )
     225}}}