Content deleted Content added
m Robot-assisted disambiguation (you can help!): Forth programming language |
m Robot-assisted disambiguation (you can help!): C programming language |
||
Line 11:
|implementations = Joy0, Joy1, "Current Joy", "John Cowan's Joy"
|dialects =
|influenced_by = [[Forth (programming language)|Forth]], [[Scheme programming language|Scheme]], [[C (programming language)|C]]
|influenced =
}}
Line 17:
The '''Joy programming language''' is a purely [[functional programming language]] that was produced by Manfred von Thun of [[Latrobe University]] in [[Melbourne]], [[Australia]]. Joy is based on composition of functions rather than [[lambda calculus]]. It has turned out to have many similarities to [[Forth (programming language)|Forth]], due less to design than to a sort of parallel evolution and convergence.
Joy is unusual (except for [[function-level programming]] languages and some esoteric ones, such as [[unlambda]]) in its lack of a [[lambda calculus|lambda]] operator, and therefore lack of [[Parameter (computer science)|formal parameters]]. To illustrate this with a common example, here is how the square function might be defined in an [[imperative programming language]] ([[C (programming language)|C]]):
int square(int x) {
Line 52:
One of the most appealing aspects of Joy is this: the [[meaning]] function is a [[homomorphism]] from the [[syntax|syntactic]] [[monoid]] onto the [[semantics|semantic]] [[monoid]]. That is, the syntactic relation of [[concatenation]] of [[symbol]]s maps directly onto the semantic relation of [[Function composition|composition]] of [[function (mathematics)|functions]]. It is a [[homomorphism]] instead of an [[isomorphism]] because it is [[onto]] but not [[one-to-one]], that is, some sequences of symbols have the same meaning (e.g. "dup +" and "2 *") but no symbol has more than one meaning.
Joy manages to be practical and potentially useful, unlike the otherwise similar [[Unlambda]]. Its library routines mirror those of ISO [[C (programming language)|C]], though the current implementation is not easily extensible with functions written in C.
== External link ==
|