@hackage fudgets0.18.3

The Fudgets Library

¤ Fudgets ¤

Fudgets is primarily a Graphical User Interface Toolkit implemented in Haskell on top of its own binding to the Xlib library of the X Windows system. Fudgets also makes it easy to create client/server applications that communicate via the Internet. The Hello world program fits on a single line:

main = fudlogue (shellF "Hello" (labelF "Hello world!"))

The key abstraction is the fudget. A fudget is a stream processor with high-level and low-level streams. The high level streams are used for communication between fudgets within a program. The low level streams are for communication with the I/O system.

Fudgets are combined using various combinators for parallel composition, serial composition and loops.

Fudgets was originally implemented in Lazy ML in the early 1990s, then converted to Haskell. It was thus designed before monadic IO was introduced in Haskell and early versions did not make use of Haskell's type classes at all.

Documentation

Installing Fudgets from Hackage

On Linux systems

  • sudo apt install libxext-dev (installs Xlib etc on Debian-based distributions, the command will be different on other Linux distributions.)
  • cabal install fudgets

On macOS

  • Install XQuartz.

  • brew install gcc (need the version of cpp included with gcc, since there are some issues with cpp from clang. Note: fudgets.cabal refers to cpp-11, you might need to change this if you install a different version of gcc.)

  • If you are using ghc>=8.10.3: unfortunately it seems that the -pgmP option no longer works, so you need to change a line in $PREFIX/lib/ghc-*/lib/settings instead:

      ,("Haskell CPP command", "gcc-11")

  • cabal install fudgets