Difference between revisions of "The Other Prelude"
From HaskellWiki
Uchchwhash (talk  contribs) (fmt, outline) 
Uchchwhash (talk  contribs) (well, evolving) 

Line 4:  Line 4:  
== Naming Conventions == 
== Naming Conventions == 

The principal is to make the names very readable for both beginners and category theorists (if any). 
The principal is to make the names very readable for both beginners and category theorists (if any). 

+  
+  == Guidelines == 

+  * The prelude should not contain any "projection" functions (like <hask>fst</hask> and <hask>snd</hask>. They go to the Extension module. 

+  
+  
+  == Issues == 

+  * Should alphanumeric names be preferred over symbols when defining a class? 

+  
== The Hierarchy == 
== The Hierarchy == 

Line 15:  Line 23:  
<haskell> 
<haskell> 

+  import Prelude ()  hide everything 

+  
+   the idea is to remove 'fmap' 

+   and map :: (a > b) > [a] > [b] to be a special case 

+  
+  class Functor f where 

+  map :: (a > b) > f a > f b 

+  
+  
+   should the Functor hierarchy proposal be adopted? 

+  class Monad m where 

+  (>>=) :: m a > (a > m b) > m b 

+  (>>) :: m a > m b > m b 

+  return :: a > m a 

+  fail :: String > m a 

+  
</haskell> 
</haskell> 

Revision as of 06:29, 21 December 2006
Contents
Call for Contribution
This fun project, called "The Other Prelude", and is a creative reconstruction of the standard Prelude. By disregarding history and compatibility, we get a clean sheet.
Naming Conventions
The principal is to make the names very readable for both beginners and category theorists (if any).
Guidelines
 The prelude should not contain any "projection" functions (like
fst
andsnd
. They go to the Extension module.
Issues
 Should alphanumeric names be preferred over symbols when defining a class?
The Hierarchy

TheOtherPrelude
 Minimalistic module. 
TheOtherPrelude.Extension
 Convenient definitions.
The Code
Currently, the code is in Wiki form. If people do agree that the collaborative decisions begot something pretty, we'll have a group of files in darcs.haskell.org some time.
The imaginery Prelude as it stands,
import Prelude ()  hide everything
 the idea is to remove 'fmap'
 and map :: (a > b) > [a] > [b] to be a special case
class Functor f where
map :: (a > b) > f a > f b
 should the Functor hierarchy proposal be adopted?
class Monad m where
(>>=) :: m a > (a > m b) > m b
(>>) :: m a > m b > m b
return :: a > m a
fail :: String > m a
How to use it, as it stands,
import Prelude ()  hide everything
import TheOtherPrelude  get everything
import qualified TheOtherPrelude.Monad as M  standard convention
See Also
 Mathematical prelude discussion  A numeric Prelude. Could this be merged into this one?
 Prelude extensions and Prelude function suggestions  Unlike "The Other Prelude" they enhance the Prelude.