Joy (programming language)
| Joy | |
|---|---|
| Paradigm | Multi-paradigm: functional, concatenative, stack-oriented |
| Designed by | Manfred von Thun |
| Developer | Manfred von Thun John Cowan |
| First appeared | 2001 |
| Stable release | March 17, 2003
/ March 17, 2003 |
| Typing discipline | Strong, dynamic |
| Major implementations | |
| Joy0, Joy1, "Current Joy", "John Cowan's Joy", "JoyJ (Joy in jvmm)" | |
| Influenced by | |
| Scheme, FP, Forth[citation needed] | |
| Influenced | |
| Factor[1], Cat, V, Trith | |
Joy is a purely functional programming language that was produced by Manfred von Thun of La Trobe University in Melbourne, Australia. Joy is based on composition of functions rather than the lambda calculus.[2] It was inspired by the function-level programming style of John Backus's FP.[3]
Overview
[edit]Functions in Joy lack formal parameters, instead functions implicitly operate on a stack.[4] For example, a function that squares a numeric input can be expressed as follows:[4]
DEFINE square == dup * .
The square function makes a copy of the top element with dup, and then multiplies the two top elements of the stack with *, leaving the square of the original top element at the top of the stack, with no need for a formal parameter. This makes Joy concise, as illustrated by this definition of quicksort:[5]
DEFINE qsort == [small] [] [uncons [>] split] [swapd cons concat] binrec.
Mathematical purity
[edit]Joy is a concatenative programming language: "The concatenation of two programs denotes the composition of the functions denoted by the two programs".[6]
See also
[edit]References
[edit]- ↑ Pestov, Sviatoslav; Ehrenberg, Daniel (2010). "Factor: a dynamic stack-based programming language". ACM SIGPLAN Notices. 45 (12). ACM: 43–58. doi:10.1145/1899661.1869637.
- ↑ "A Conversation with Manfred von Thun". www.nsl.com. Retrieved 2026-10-06.
- ↑ Manfred von Thun (December 12, 2003). "A Conversation with Manfred von Thun". Retrieved May 31, 2013.
In the early 1980s I came across the famous Backus paper "Can programming be liberated from the von Neumann style," and I was immediately intrigued by the higher level of programming in his FP.
- 1 2 "An informal tutorial on Joy". Archived from the original on October 7, 2011.
- ↑ "Sequence Library". Archived from the original on October 7, 2011.
- ↑ "Mathematical Foundations of Joy". Archived from the original on October 7, 2011.
External links
[edit]- Official Joy Programming Language Website (La Trobe University) at the Wayback Machine (archived 2012-09-07)
- Joy homepage mirror
- Joy source code (GitHub-Archive)
- Freneger, Paul (August 2003). "The JOY of forth". ACM SIGPLAN Notices. 38 (8): 15–17. doi:10.1145/944579.944583.
- von Thun, Manfred; Thomas, Reuben (October 9, 2001). "Joy: Forth's Functional Cousin" (PDF). Proceedings of the 17th EuroForth Conference.
- Christopher Diggins (December 31, 2008). "What is a Concatenative Language". Dr. Dobbs.
- Apter, Stevan. "Functional Programming in Joy and K". Vector. Archived from the original on 2008-08-28. Retrieved 2011-02-28.
- Joy of Postfix Calculator App (Subset of Joy)