MagicHaskeller: An Inductive Functional Programming System for Casual/Beginner Haskell Programmers

Susumu Katayama, University of Miyazaki

(The award-winning reinforcement learner using MagicHaskeller is at the end of this page.)

(There is also an experimental variant of MagicHaskeller which synthesizes functions for Microsoft Excel.)

Use it now!

Specify a function f by writing a predicate as a boolean-valued expression. You will get functions generalizing the specification.



Limitations, ToDos, and Future Plans

How to Install the Library and the Server

If you are really interested, you can install the library and the server programs to your computer.
  1. Choose your OS
  2. Install Haskell Platform

    Please install the 2014 or 2015 version. (2015 is slightly better.)

  3. Set up the PATH variable.
    Add export PATH=$HOME/.cabal/bin/:$PATH to .bashrc or so.
    Add %APPDATA%\cabal\bin to Path. (But this may be unnecessary when using the 2015 version of Haskell Platform.)
  4. Install MagicHaskeller by typing

    $ cabal update
    $ cabal install -j MagicHaskeller
    (Ignore $ which just denotes the prompt.)

    On Windows + Haskell Platform 2014, you may need to use
    $ cabal install -j MagicHaskeller --flags="-NETWORKURI"
    instead. The point is to force to use the already-installed version of the network package.

    You may need to unregister some package temporarily, and restart installation again.
    In my case, I had to unregister the HTTP package, so
    $ ghc-pkg unregister HTTP
    $ cabal install -j MagicHaskeller

By installation you will obtain the library, the MagicHaskeller executable that works as a stand-alone synthesizer REPL and a backend server, and the MagicHaskeller.cgi executable that is the CGI frontend program. Their usage was somehow explained in AAIP 2015.

For those who are interested in using the library, the Hackage page for MagicHaskeller provides documentation on each of the exposed modules. Also, here is the old web page for its library versions. However, if you want to reproduce the same results as MagicHaskeller on the Web using the library rather than using the MagicHaskeller executable, you should either read the source code of MagicHaskeller/SimpleServer.hs, MagicHaskeller/Minimal.hs, and MagicHaskeller/LibTH.hs, or contact me.

The MagicHaskeller Agent

MagicHaskeller can be used for implementing a general AI agent! Here is the award-winning incremental reinforcement learner submitted for the Round 1 of General AI Challenge hosted by GoodAI.

Other Materials

extended abstract and the presentation file used for the presentation at Haskell 2013 Symposium. (Some links are updated to make usable in this environment, for those of you who are interested.)
AAIP 2013 stuff
AAIP 2015 stuff