Difference between revisions of "WikipediaArticleDesign"

From HaskellWiki
Jump to: navigation, search
 
m
 
(9 intermediate revisions by one other user not shown)
Line 5: Line 5:
 
Here's a draft structure based on the "[[History_of_Haskell|History of Haskell]]" paper.
 
Here's a draft structure based on the "[[History_of_Haskell|History of Haskell]]" paper.
   
== Structures ==
 
  +
Please make comments on the [[Talk:WikipediaArticleDesign|Discussion page]]
   
 
== Structures ==
   
1. History
+
1. History
 
1.1 Related Languages
 
1.1 Related Languages
   
2. OVerview and Design Principles
+
2. Overview and Design Principles
 
2.1 Laziness
 
2.1 Laziness
 
2.2 Purity
 
2.2 Purity
Line 20: Line 21:
 
3.1 Syntax
 
3.1 Syntax
 
3.1.1 Layout
 
3.1.1 Layout
3.1.2 Functions, currying, application
+
3.1.2 Functions, currying, application, abstraction
 
3.1.3 Operators
 
3.1.3 Operators
 
3.1.4 Namespaces
 
3.1.4 Namespaces
 
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 36: Line 35:
   
 
3.3 Type System
 
3.3 Type System
3.3.1 Type Classes
+
3.3.1 Type classes
 
3.3.2 Type defaulting
 
3.3.2 Type defaulting
 
3.3.3 Overloaded Literals
 
3.3.3 Overloaded Literals
Line 45: Line 44:
 
Existential types
 
Existential types
 
Extensible records
 
Extensible records
Implicit parameters
 
 
Polymorphic Recursion
 
Polymorphic Recursion
 
Higher-Rank Types
 
Higher-Rank Types
 
Generalized ADTs
 
Generalized ADTs
  +
Type Families
  +
Unlifted types
 
Generics
 
Generics
 
Template Metaprogramming
 
Template Metaprogramming
   
 
3.4 Monads
 
3.4 Monads
3.4.1 IO
+
Overview
3.4.2 Exceptions
+
Applications
3.4.3 STM Monad
+
* Monadic IO
3.4.4 Arrows
+
* do-notation
3.4.5 Applicative Functors
+
* References
  +
* Exceptions
  +
* ST monad
  +
* STM monad
  +
Applicative Functors
  +
Arrows
   
 
3.6 Concurrency and Parallelism
 
3.6 Concurrency and Parallelism
Line 69: Line 69:
 
3.7.1 FFI
 
3.7.1 FFI
 
3.7.2 Modules
 
3.7.2 Modules
3.7.3 Distribution
+
3.7.3 Packages
  +
  +
3.8 Semantics
  +
* Static semantics
  +
* Dynamic semantics
  +
  +
3.9 Extensions to Haskell
   
 
4. Implementations
 
4. Implementations
4.1 GHC
+
4.1 GHC, GHCi
* GHCi
+
4.2 Hugs
4.2 HBC
+
4.3 NHC, YHC
* HBI
+
4.4 Other implementations
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. Tools
Line 82: Line 82:
 
5.2 Testing
 
5.2 Testing
 
5.3 Alex and Happy
 
5.3 Alex and Happy
5.4 Cabal
 
 
5.5 Haddock
 
5.5 Haddock
 
5.6 Hoogle and Hayoo
 
5.6 Hoogle and Hayoo
 
  +
7. Libraries and Distribution
+
6. Distribution
* Build System
+
* Cabal
* Hackage and Cabal
+
* Hackage
  +
* cabal-install
  +
* Haskell Platform
  +
  +
7. Libraries ''(top 2 libraries by Hackage downloads or notability)''
 
* Audio
 
* Audio
 
* Codecs
 
* Codecs
Line 94: Line 93:
 
* Data Structures
 
* Data Structures
 
* Database
 
* Database
 
* HDBC
 
* Games
 
* Games
  +
* 2D
  +
* 3D
 
* GUIs
 
* GUIs
  +
* gtk2hs
  +
* wxHaskell
  +
* FRP guis
 
* Languages
 
* Languages
 
* Math
 
* Math
  +
* Numeric Prelude
 
* Music
 
* Music
  +
* Haskore
 
* Network
 
* Network
 
* System
 
* System
 
* Testing
 
* Testing
  +
* QuickCheck
  +
* HUnit
 
* Text
 
* Text
  +
* Unicode/UTF8
 
* Web
 
* Web
  +
* Happstack
   
 
6. Applications
 
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 applied research projects (by citations? [http://haskell.org/haskellwiki/Research_papers see here])''
  +
 
* Parser combinators
 
* Parser combinators
* Darcs
 
 
* [Hardware design]
* Systems Programming
 
  +
* [http://haskell.org/haskellwiki/Libraries_and_tools/Operating_system Operating systems]
* Compilers:
 
  +
* [http://haskell.org/haskellwiki/Research_papers/Functional_reactive_programming Functional Reactive Programming]
* GHC
 
* Pugs
 
* Curry
 
* Epigram, Agda
 
* Cryptol
 
* EDSLs
 
* Paradise, Atom
 
* Hardware design: Lava
 
* Functional Reactive Programming
 
   
 
7. Community
 
7. Community

Latest revision as of 16:21, 4 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.

Please make comments on the Discussion page

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, abstraction
    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
        Type Families
        Unlifted types
        Generics
        Template Metaprogramming
 3.4 Monads
     Overview
     Applications 
        * Monadic IO
        * do-notation
        * References
        * Exceptions
        * ST monad
        * STM monad
     Applicative Functors
     Arrows
 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 Packages
 3.8 Semantics
    * Static semantics
    * Dynamic semantics
 3.9 Extensions to Haskell

4. Implementations

 4.1 GHC, GHCi
 4.2 Hugs
 4.3 NHC, YHC
 4.4 Other implementations

5. Tools

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

6. Distribution

 * Cabal
 * Hackage
 * cabal-install
 * Haskell Platform

7. Libraries (top 2 libraries by Hackage downloads or notability)

 * 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 applied research projects (by citations? see here)

 * Parser combinators
 * [Hardware design]
 * Operating systems
 * Functional Reactive Programming

7. Community

9 Further Reading