MyNixOS website logo
Description

Automatic recompilation and reloading of haskell modules.

This library provides support for automatically recompiling and reloading modules into your programs when the source code is modified.

Any program called ghc in your PATH will be used for recompiling.

module Main where
import System.IO           (hSetBuffering,stdout,BufferMode(..))
import System.Plugins.Auto (withMonadIO,initPlugins)
import Answer

main :: IO ()
main = do ph<-initPlugins
        hSetBuffering stdout NoBuffering
        putStrLn "This program interacts with you in a loop."
        putStrLn "Type something, and the program will respond when you hit the Enter Key."
        putStrLn "Modify Answer.hs while interacting and you should see the answers"
        putStrLn "change accordingly."
        let interactiveLoop = prompt ph >> interactiveLoop
        interactiveLoop
where
  prompt ph = do
     putStr "> "
     input <- getLine
     $(withMonadIO 'getAnswer) ph notLoaded$ \errs getAnswer ->
         mapM_ putStrLn errs  >> getAnswer input

  notLoaded errs =
     if null errs then putStrLn "Plugin not loaded yet."
       else putStrLn "Errors found:" >> mapM_ (putStrLn . ("  "++)) errs
              >> putStrLn "Try fixing the errors and come back here."
module Answer where

getAnswer :: String -> IO ()
getAnswer input = putStrLn ("What you typed: "++input)
Metadata

Version

0.0.4

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows