Difference between revisions of "Language features"
From Clean
Jump to navigationJump to search (Created page with '== The Functional Programming Language Clean == A functional programming language like Clean is based on the concept of mathematical functions. Clean is a pure functional languag…') |
m (moved Language Features to Language features) |
||
(3 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | + | Clean is a general purpose, state-of-the-art, pure and lazy functional | |
− | + | programming language designed for making real-world applications. | |
+ | Here is a list of the most notable language features: | ||
− | + | * Clean is a lazy, pure, and higher-order functional programming language with explicit graph-rewriting semantics. | |
− | * | ||
− | |||
− | + | * Although Clean is by default a lazy language, one can smoothly turn it into a strict language to obtain optimal time/space behavior: functions can be defined lazy as well as (partially) strict in their arguments; any (recursive) data structure can be defined lazy as well as (partially) strict in any of its arguments. | |
− | |||
− | + | * Clean is a strongly typed language based on an extension of the well-known Milner/Hindley/Mycroft type inferencing/checking scheme including the common higher-order types, polymorphic types, abstract types, algebraic types, type synonyms, and existentially quantified types. | |
− | |||
− | * Clean | + | * Clean has pattern matching, guards, list comprehensions, array comprehensions and a lay-out sensitive mode. |
− | + | ||
− | + | * Clean supports type classes and type constructor classes to make overloaded use of functions and operators possible. | |
− | + | ||
− | * | + | * The uniqueness typing system of Clean makes it possible to develop efficient applications. In particular, it allows a refined control over the single-threaded use of objects which can influence the time and space behavior of programs. Uniqueness typing can also be used to incorporate destructive updates of objects within a pure functional framework. It allows destructive transformation of state information and enables efficient interfacing to the nonfunctional world (to C but also to I/O systems like X-Windows) offering direct access to file systems and operating systems. |
− | + | ||
− | + | * Clean offers records and (destructively updateable) arrays and files. | |
− | + | ||
− | * | + | * The Clean type system supports dynamic types, allowing values of arbitrary types to be wrapped in a uniform package and unwrapped via a type annotation at run time. Using dynamics, code and data can be exchanged between Clean applications in a flexible and type-safe way. |
− | * Clean | + | |
− | * Clean | + | * Clean provides a built-in mechanism for generic functions. |
− | + | ||
− | * There are many [[ | + | * There is a Clean IDE and there are many [[libraries]] available offering additional functionality. |
Latest revision as of 13:22, 27 July 2010
Clean is a general purpose, state-of-the-art, pure and lazy functional programming language designed for making real-world applications. Here is a list of the most notable language features:
- Clean is a lazy, pure, and higher-order functional programming language with explicit graph-rewriting semantics.
- Although Clean is by default a lazy language, one can smoothly turn it into a strict language to obtain optimal time/space behavior: functions can be defined lazy as well as (partially) strict in their arguments; any (recursive) data structure can be defined lazy as well as (partially) strict in any of its arguments.
- Clean is a strongly typed language based on an extension of the well-known Milner/Hindley/Mycroft type inferencing/checking scheme including the common higher-order types, polymorphic types, abstract types, algebraic types, type synonyms, and existentially quantified types.
- Clean has pattern matching, guards, list comprehensions, array comprehensions and a lay-out sensitive mode.
- Clean supports type classes and type constructor classes to make overloaded use of functions and operators possible.
- The uniqueness typing system of Clean makes it possible to develop efficient applications. In particular, it allows a refined control over the single-threaded use of objects which can influence the time and space behavior of programs. Uniqueness typing can also be used to incorporate destructive updates of objects within a pure functional framework. It allows destructive transformation of state information and enables efficient interfacing to the nonfunctional world (to C but also to I/O systems like X-Windows) offering direct access to file systems and operating systems.
- Clean offers records and (destructively updateable) arrays and files.
- The Clean type system supports dynamic types, allowing values of arbitrary types to be wrapped in a uniform package and unwrapped via a type annotation at run time. Using dynamics, code and data can be exchanged between Clean applications in a flexible and type-safe way.
- Clean provides a built-in mechanism for generic functions.
- There is a Clean IDE and there are many libraries available offering additional functionality.