-- Initial halive.cabal generated by cabal init. For further -- documentation, see http://haskell.org/cabal/users-guide/ name: halive version: 0.1.0.0 x-revision: 2 synopsis: A live recompiler description: Live recompiler for Haskell . . Halive uses the GHC API to instantly recompile and reload your code any time you change it. . Usage: > halive . Any time you change a file in the current directory or its subdirectories, halive will recompile and rerun the 'main' function in the file you gave it. . If the program is long-running (e.g. a daemon, GUI or game loop) it will be killed and restarted. Learn how to maintain state in the next section. . Try a live-coding GL demo by running 'halive demo/Main.hs' (in the source package) and changing values in 'Main.hs' and 'Green.hs' (requires 'gl', 'GLFW-b', 'foreign-store', 'linear', and 'random'). . /Keeping values alive/ . To keep state alive, import 'Halive.Utils' and wrap your value in 'reacquire' along with a unique identifier, like: . > win <- reacquire 0 (setupGLFW \"HotGLFW\" 640 480) . to only create the resource the first time you run the program, and then reuse it on subsequent recompilations. . You can see this in action in 'test/glfw.hs'. . Thanks to Chris Done's library for enabling this. . /Notes/ . Creating, updating, and deleting modules in the include path should work fine during a Halive session. . Halive also supports Cabal sandboxes; if run within a directory containing a cabal.sandbox.config file it will use the package database defined therein. . Halive also works nicely with either batch-processing or run-loop type programs — if the program finishes, it will be restarted on next save, and if it's still running, it will be killed and restarted on save. . To kill Halive during run-loop type programs, you may need to hold down Ctrl-C to get GHC to recognize the double-Control-C-kill sequence. . homepage: tree.is license: BSD2 license-file: LICENSE author: Luke Iannini maintainer: lukexi@me.com -- copyright: category: Development build-type: Simple -- extra-source-files: cabal-version: >=1.10 source-repository head type: git location: git://github.com/lukexi/halive.git library hs-source-dirs: src exposed-modules: Halive.Utils default-language: Haskell2010 ghc-options: -Wall build-depends: base, foreign-store executable halive main-is: main.hs hs-source-dirs: exec default-language: Haskell2010 ghc-options: -Wall -threaded -dynamic -- other-modules: -- other-extensions: build-depends: base >=4.7 && <4.9, ghc, ghc-paths, bin-package-db, transformers, directory, filepath, fsnotify, system-filepath