packages feed

fltkhs-demos-0.0.0.5: README.md

# 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 a location known to Stack, so to execute `fltkhs-arc` for instance
do:

```
> stack exec fltkhs-arc
```

Note that all 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.

## 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 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 Stack to ignore it during the `configure` step:

```
stack build --flag fltkhs-demos:-fastCompile
```

# GHCi

Please see "Running In The Repl" [5] section of the FLTKHS documentation for more information.


  [1]: http://hackage.haskell.org/package/fltkhs/
  [2]: http://hackage.haskell.org/package/fltkhs/docs/Graphics-UI-FLTK-LowLevel-FLTKHS.html
  [3]: https://github.com/deech/fltkhs-fluid-hello-world
  [4]: https://ghc.haskell.org/trac/ghc/ticket/10568
  [5]: http://hackage.haskell.org/package/fltkhs/docs/Graphics-UI-FLTK-LowLevel-FLTKHS.html#g:14