In a functional program:General RulesThe statements are functions. (non imperative mode of expression)
functions can be passed and returned as parameters. (functions are 'first class' entities).
functions return one item and affect nothing else (no side effects).
functions are immutable: for the same inputs the result will always be the same.
variables can only be assigned values once. (with the possible exception of counters and iterators).
recursion is a favoured means of achieving iteration without breaking the no-rewrite rule.
Advantages:The Functions are thread-safe - concurrent execution
Programs can be formally proved
Greater possibilities for abstraction and reusabilty of components.
Greater scope for the compiler to optimise.
Disadvantages:Less efficient than imperative programming.
Intensive gargage collection.
Major paradigm shift for most programmers
The question is: could you design a Windows GUI like this, without going into severe contortions
