https://github.com/kiridi/inductive-haskell
Inductive Haskell
https://github.com/kiridi/inductive-haskell
haskell inductive-learning inductive-program-synthesis program-synthesis
Last synced: about 2 months ago
JSON representation
Inductive Haskell
- Host: GitHub
- URL: https://github.com/kiridi/inductive-haskell
- Owner: kiridi
- License: bsd-3-clause
- Created: 2019-10-02T15:31:27.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2020-04-29T13:38:42.000Z (about 5 years ago)
- Last Synced: 2025-01-29T20:50:31.372Z (4 months ago)
- Topics: haskell, inductive-learning, inductive-program-synthesis, program-synthesis
- Language: Haskell
- Homepage:
- Size: 1.34 MB
- Stars: 3
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: ChangeLog.md
- License: LICENSE
Awesome Lists containing this project
README
# Inductive Haskell
This is the implementation that aims to support my 3rd year dissertation, _Machine learning functional prgrams_.
The implementation is still a prototype, so code is a bit messy and comments are lacking.Rigth now, the system is capable of finding programs that are part of a restricted program space. There are 3 hard coded metarules (a future version will allow the user to supply them) that describe how the functions should look like: function composition, map and filter (more will be addded). The input for those functions are either user defined background functions or functions that have been created through the synthesis process (functions whose name starts with _gen_). The language that we induce programs in is a pure language that maps to a subset of Haskell (a description could be found in the file _src/Language/Syntax.hs_ and an usage example can be found in the file _test/droplasts.test_).
Once a program has been successfully found, it will be pretty-printed in the console.
# Running the system
The only build dependency is __The Haskell Platform__, which will also install the _stack_ build system, used to run the program.When in the project directory, running the command `stack run input` will synthesize a program based on the input file (relative path). For an example of how the input file should look like, look at the file `test/droplasts.test`.