-- Initial halive.cabal generated by cabal init. For further -- documentation, see http://haskell.org/cabal/users-guide/ name: halive version: 0.1.0.0 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: @cabal install@ and then @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 #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 #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