Difference between revisions of "FAQ"

From Clean
Jump to navigationJump to search
Line 1: Line 1:
 
== 1.  What is the purpose of Clean? ==
 
== 1.  What is the purpose of Clean? ==
  
The purpose of Clean is to serve as a fast, non-strict, purely functional programming language that is easy to optimize.  Clean is characterized by lazy evaluation, which means that only arguments that need to be evaluated in a function call are actually evaluated.  In addition, Clean functions can be written to use (partially) strict evaluation when necessary.  Unlike R6RS Scheme and similar to Haskell, Clean offers pattern-matching, guards, array comprehensions, and a Hindley-Milner style type inferencing scheme .  Unlike Haskell, Clean offers list comprehensions.  For I/O-related functions, in contrast to Haskell's monads, Clean offers a uniqueness type inferencing system, which allows destructive transformation of state information within a purely functional framework.  Clean is useful for writing relatively bug-free programs in fewer lines of code, and for formally proving properties of those programs, thereby often eliminating the need for debugging.
+
The purpose of Clean is to serve as a fast, non-strict, purely functional programming language that is easy to optimize.  Clean is characterized by lazy evaluation, which means that only arguments that need to be evaluated in a function call are actually evaluated.  In addition, Clean functions can be written to use (partially) strict evaluation when necessary.  Unlike R6RS Scheme and similar to Haskell, Clean offers pattern-matching, guards, array comprehensions, and a Hindley-Milner style type inferencing scheme .  For I/O-related functions, in contrast to Haskell's monads, Clean offers a uniqueness type inferencing system, which allows destructive transformation of state information within a purely functional framework.  Clean is useful for writing relatively bug-free programs in fewer lines of code, and for formally proving properties of those programs, thereby often eliminating the need for debugging.
  
 
== 2.  What are the advantages of Clean? ==
 
== 2.  What are the advantages of Clean? ==

Revision as of 05:31, 3 March 2008

1. What is the purpose of Clean?

The purpose of Clean is to serve as a fast, non-strict, purely functional programming language that is easy to optimize. Clean is characterized by lazy evaluation, which means that only arguments that need to be evaluated in a function call are actually evaluated. In addition, Clean functions can be written to use (partially) strict evaluation when necessary. Unlike R6RS Scheme and similar to Haskell, Clean offers pattern-matching, guards, array comprehensions, and a Hindley-Milner style type inferencing scheme . For I/O-related functions, in contrast to Haskell's monads, Clean offers a uniqueness type inferencing system, which allows destructive transformation of state information within a purely functional framework. Clean is useful for writing relatively bug-free programs in fewer lines of code, and for formally proving properties of those programs, thereby often eliminating the need for debugging.

2. What are the advantages of Clean?

Clean has the following advantages over similar functional programming languages: