@hackage fltkhs-demos0.0.0.3

FLTKHS demos. Please scroll to the bottom for more information.

  • Deprecated

  • Dependencies (0)

  • Dependents (1)

    @hackage/acme-everything
  • Package Flags

      fastcompile
       (on by default)

      Turn off optimizations for faster compilation

#Fltkhs-demos

These are end-to-end demos of [FLTKHS] 1, a Haskell Binding to the FLTK GUI Library

Fltkhs-demos aims not only to show off the features of the [fltkhs] 1 but also serve as a way of learning the API by example. For more thorough documentation on the [fltkhs] 1 API please see the [FLTKHS module] 2 of that package.

Introduction

The demos shipped with this package are listed in fltkhs-demos.cabal as separate Executable components. Once the package is installed they are installed to Cabal's standard /bin/ directory (usually ~/.cabal/bin on Linux).

Note that the executables are prefixed with "fltkhs-". This is in order to prevent the demo executables from stomping over applications of the same name the user might already have installed. Typing:

 > fltkhs-<TAB>

at the command line should show a complete list of available demos.

Alternatively you can do:

 > ls ~/.cabal/bin/fltkhs-*

Learning The API

Most of the demos are exact ports of those shipped in the 'test' directory of the <http://fltk.org FLTK> distribution. It is hoped the user will study the Haskell demo code side-by-side with the C++ demo code in order to understand the API. The section API Guide in the [FLKTHS documentation] 2 covers this in more detail.

Why is the demo code so un-Haskelly?

For being written in Haskell, the demo code is horrifyingly/amazingly imperative and stateful. Although it may repulse those who used to pure Haskell idioms it is that way for a reason.

The demo code was never meant to be idiomatic Haskell code but a way of showing as much of the API as possible. The API itself closely resembles the underlying C++ code which is imperative and stateful. This has the advantage of making the API easier to learn.

For instance, assuming FLTK was installed from source compare /src/Examples/arc.hs with /test/arc.cxx in the FLTK source directory. There is quite a bit of correspondence and it is easy to see how the Haskell API functions map to the C++ ones.

Fast Compilation Flag

This package comes with a Cabal flag fastCompile that is enabled by default and speeds up compilation. More information on this flag is available under the Compilation section of the [FLTKHS documentation] 2.

To disable this flag, tell Cabal to ignore it during the configure step:

cabal configure -f-fastCompile

GHCi

The recommended way to running the REPL in a fltkhs application is cabal repl. For example to run the fltkhs-arc example do:

cabal repl fltkhs-arc

NOTE: For now it only works in GHC 7.8.x. GHC 7.10.x has an unfortunate regression that crashes GHCi because it cannot find symbols in the C library that contains the C++ bindings. This has been fixed in GHC 8. More information is available in the [ticket] 4.