Jump to content

英文维基 | 中文维基 | 日文维基 | 草榴社区

Fudgets

From Wikipedia, the free encyclopedia
Fudgets
Original author(s)Thomas Hallgren,
Magnus Carlsson
Initial releaseJune 1993; 31 years ago (1993-06)
Stable release
0.18.4 / June 2023; 1 year ago (2023-06)
Written inHaskell
Operating systemPOSIX compatible: Unix, Unix-like, Linux, macOS via XQuartz
PlatformIA-32, x86-64
Available inEnglish
TypeGUI toolkit
Licensefreeware non-commercial

In computing, Fudgets is a graphical user interface toolkit for the functional programming language Haskell and the X Window System.[1][2] Fudgets makes it easy to create client–server model applications that communicate via the Internet.

Most of the work on Fudgets was done in 1991-1996 by Thomas Hallgren and Magnus Carlsson.[3]

The authors claim that many of the advantages of Fudgets come from it being programmed in a lazy functional programming language.[4]

The main entity of toolkit is fudget (implemented on low level through stream processors) which has its own input and output.[5] Fudgets can be composed in parallel or sequence, yielding new fudget which can be used in code as any other fudget.

Example

[edit]
factorialF  = stdoutF >==< mapF (show . factorial . read) >==< stdinF
factorial   :: Integer -> Integer
factorial n = product [1..n]

The code is self-describing considering that >==< is sequential fudget plumbing and mapF is fudget that takes a function of one argument and makes a fudget which output is input applied to that function. Fudget composition must be read from right to left, as a simple function composition. Now you can simply write:

main = fudlogue factorialF

compile and run. For every given integer value it will print its factorial.

License

[edit]

The software license of Fudgets claims that this software is freeware for non-commercial use only.

References

[edit]
  1. ^ Hallgren, Thomas; Carlsson, Magnus (1995). "Programming with Fudgets". In Jeuring, Johan; Meijer, Erik (eds.). Advanced Functional Programming. Lecture Notes in Computer Science. Vol. 925. Berlin, Heidelberg: Springer. pp. 137–182. doi:10.1007/3-540-59451-5_5. ISBN 978-3-540-49270-2.
  2. ^ Reid, Alastair; Singh, Satnam (1994). "Implementing Fudgets with Standard Widget Sets". Written at Ayr, Scotland. In O’Donnell, John T.; Hammond, Kevin (eds.). Functional Programming, Glasgow 1993: Proceedings of the 1993 Glasgow Workshop on Functional Programming, 5–7 July 1993. Workshops in Computing. London: Springer. pp. 222–235. doi:10.1007/978-1-4471-3236-3_18. ISBN 978-1-4471-3236-3. Retrieved 2023-10-26.
  3. ^ Hallgren, Thomas; Carlsson, Magnus (June 6, 2023). "Fudgets Home Page". altocumulus.org. Retrieved October 25, 2023.
  4. ^ Carlsson, Magnus; Hallgren, Thomas (1993-07-01). "Fudgets: A graphical user interface in a lazy functional language". Proceedings of the conference on Functional programming languages and computer architecture. ACM. pp. 321–330. doi:10.1145/165180.165228. ISBN 978-0-89791-595-3. S2CID 9943994.
  5. ^ Burton, F. Warren (1999). "Advanced Functional Programming: Lecture Notes in Computer Science 925 edited by Johan Jeuring and Erik Meijer, Springer-Verlag, 1995". Journal of Functional Programming. 9 (1): 105–111. doi:10.1017/S0956796899223246. ISSN 1469-7653.
[edit]