
This add `gen-spec` which provides a fairly general macro for creating `test.check` specifications for vector instructions. It takes a string used to generate specification names, a function used to check the state after running the function under test, and a list of keywords indicating types for arguments generated by `test.check` and passed to the check function. Keywords like `:integer` and `:string` are associated with "simple" generators such as `gen/small-integer` and `gen/string`. The keyword `:vector` is used to generate a vector of items whose type is specified by the `generator` argument to `generator-for-arg-type`. This allows us to loop over all of the supported vector item types in the macro and generate a separate specification for each type. We moved the `value-type` argument for the `check` functions to the front to simplify passing in the value type arguments, which can vary in number.
propeller
Yet another Push-based genetic programming system in Clojure.
Usage
To run PushGP on the default genetic programming problem
from a REPL, load propel.core into your REPL (i.e. lein repl
),
and run (-main)
.
To run PushGP on the default genetic programming problem from
command line, execute lein run
. Command-line arguments may
be provided to override the defaults specified in -main
, for
example, lein run :population-size 100
. You can use something
like lein run | tee outfile
to send output both to the terminal
and to outfile
.
CLJS Usage
Development
Run in development:
yarn
(mkdir -p target && cp assets/index.html target/)
yarn shadow-cljs watch app
shadow-cljs
will be installed in node_modules/
when you run yarn
.
:dev-http
specifies that target/
will be served at http://localhost:8080 .
REPL
After page is loaded, you may also start a REPL connected to browser with:
yarn shadow-cljs cljs-repl app
Once the REPL is loaded, load the core namespace with:
(ns propeller.core)
Calling (-main)
will run the default genetic programming problem.
Description
Propel is an implementation of the Push programming language and the PushGP genetic programming system in Clojure.
For more information on Push and PushGP see http://pushlanguage.org.