Mirror of http://chriswarbo.net/git/ml4hsfe
License
Warbo/ml4hsfe
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
# Machine Learning for Haskell - Feature Extraction # This repository provides a *recurrent clustering* algorithm, which assigns feature vectors to Haskell Core syntax trees. This works by turning the tree structure into a (left-biased) matrix then concatenating the rows. Each symbol in the tree is given a number (feature): keywords use hard-coded numbers, whilst names are dereferenced to get *their* syntax trees, grouped into clusters based on the features of those trees, and the index of the cluster is used as the feature. ## Layout ## This is a normal Haskell project using the Cabal build system. We also provide definitions for the Nix package manager and a benchmark suite for the Airspeed Velocity (ASV) framework (using the `asv-nix` plugin). - `asv.conf.json` is the Airspeed Velocity configuration. It sets up the benchmark suite in `benchmarks/` - `benchmarks/` defines our benchmarks. The `default.nix` file will be loaded for each git revision, and defines a `python` executable whose environment contains values, commands, etc. from that revision for use by the benchmark scripts (the `*.py` files). - `overlay.nix` is a Nix overlay, providing (among other things) a Haskell package set containing this `ML4HSFE` package, a standalone `ML4HSFE` package taken from that set and an instantiation of the `test.nix` tests. - `overlayed.nix` applies our overlay to a pinned version of Nixpkgs. This should work regardless of what version your system provides. - `release.nix` chooses those packages from `overlayed.nix` which we want to build and provide via continuous integration. - `tests.nix` contains some integration tests which can't be run from the Cabal test suite. ## Infrastructure ## The included `shell.nix` file provides suitable versions of GHC and asv. During development I use ghcid to build and run tests after each save. I find the following `.ghcid` file works well: ``` --command="nix-shell --run 'cabal new-repl'" --test=":! cabal new-test" ``` The call to `nix-shell` ensures that the GHC defined in `shell.nix` is used, and `cabal new-repl` invokes GHCi with this library in scope. The contents of the `--test` option will be sent to GHCi whenever the project is successfully built/loaded. We use `:!` to invoke a shell command, and `cabal new-main` is the command to run the test suite.
Releases
No releases published
Packages 0
No packages published