Changes between Version 8 and Version 9 of Prelude


Ignore:
Timestamp:
Feb 22, 2006 4:31:42 PM (9 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}}}