Difference between revisions of "WikipediaArticleDesign"

From HaskellWiki
Jump to navigation Jump to search
Line 6: Line 6:
   
 
== Structures ==
 
== Structures ==
 
   
 
1. History
 
1. History
Line 25: Line 24:
 
3.1.5 Declarations vs Expressions
 
3.1.5 Declarations vs Expressions
 
3.1.6 List comprehensions
 
3.1.6 List comprehensions
3.1.7 Comments
 
3.1.8 N+K Controversy
 
   
 
3.2 Algebraic Data Types
 
3.2 Algebraic Data Types
Line 45: Line 42:
 
Existential types
 
Existential types
 
Extensible records
 
Extensible records
Implicit parameters
 
 
Polymorphic Recursion
 
Polymorphic Recursion
 
Higher-Rank Types
 
Higher-Rank Types
Line 53: Line 49:
   
 
3.4 Monads
 
3.4 Monads
3.4.1 IO
+
Monadic IO
3.4.2 Exceptions
+
do-notation
3.4.3 STM Monad
+
References
3.4.4 Arrows
+
Exceptions
  +
3.4.5 Applicative Functors
 
   
 
3.6 Concurrency and Parallelism
 
3.6 Concurrency and Parallelism
Line 70: Line 66:
 
3.7.2 Modules
 
3.7.2 Modules
 
3.7.3 Distribution
 
3.7.3 Distribution
  +
  +
3.8 Semantics
   
 
4. Implementations
 
4. Implementations

Revision as of 23:11, 2 August 2009

Motiviation

The Haskell Wikipedia Article is an ad hoc collection of edits with no overriding structure or theme. The Haskell community should be able to contribute a better article to represent this project.

Here's a draft structure based on the "History of Haskell" paper.

Structures

1. History

 1.1 Related Languages

2. OVerview and Design Principles

 2.1 Laziness
 2.2 Purity
 2.3 Type classes
 2.4 Open and free

3. Features

 3.1 Syntax
    3.1.1 Layout
    3.1.2 Functions, currying, application
    3.1.3 Operators
    3.1.4 Namespaces
    3.1.5 Declarations vs Expressions
    3.1.6 List comprehensions
 3.2 Algebraic Data Types
    3.2.1 Pattern Matching
    3.2.2 Abstract Types
    3.2.3 Lists
    3.2.4 Tuples
    3.2.5 Records
 3.3 Type System
    3.3.1 Type Classes
    3.3.2 Type defaulting
    3.3.3 Overloaded Literals
    3.3.4 Higher Kinded Polymorphism
    3.3.5 Multi-Parameter Type Classes
    3.3.6 Functional Dependencies
    3.3.7 Type System Extensions
        Existential types
        Extensible records
        Polymorphic Recursion
        Higher-Rank Types
        Generalized ADTs
        Generics
        Template Metaprogramming
 3.4 Monads
     Monadic IO
         do-notation
     References
     Exceptions


 3.6 Concurrency and Parallelism
     Threads
     Shared memory communcation
     Futures and sparks
     Software Transactional Memory
     Data Parallelism
 3.7 Programming in the Large
    3.7.1 FFI
    3.7.2 Modules
    3.7.3 Distribution
 3.8 Semantics

4. Implementations

 4.1 GHC
    * GHCi
 4.2 HBC
    * HBI
 4.3 Gofer and Hugs
 4.3 NHC98 and YHC
 4.4 JHC and LHC
 4.5 EHC and UHC
 4.7 Helium
 4.6 Yale Haskell

5. Tools

 5.0 Profiling
 5.1 Debugging
 5.2 Testing
 5.3 Alex and Happy
 5.4 Cabal
 5.5 Haddock
 5.6 Hoogle and Hayoo 

7. Libraries and Distribution

 * Build System
 * Hackage and Cabal
 * Audio
 * Codecs
 * Concurrency
 * Data Structures
 * Database
    * HDBC
 * Games
    * 2D
    * 3D
 * GUIs
    * gtk2hs
    * wxHaskell
    * FRP guis
 * Languages
 * Math
    * Numeric Prelude
 * Music
    * Haskore
 * Network
 * System
 * Testing
    * QuickCheck
    * HUnit
 * Text
    * Unicode/UTF8
 * Web
    * Happstack

6. Applications

  • Notable open source applications (by popularity)*
 * darcs
 * xmonad
 * pugs
 * pandoc
 * gitit
 * cpphs
 * agda
 * yi, leskah
  • Notable commercial applications (citing CUFP)*
 * Bluespec  (Bluespec)
 * Cryptol (Galois)
 * Atom (Eaton)
 * Paradise (credit Suisse)
  • Notable research projects (by citations?)*
 * Parser combinators
 * Hardware design
 * Operating systems
 * Functional Reactive Programming

7. Community

9 Further Reading