huff alternatives and similar packages
Based on the "AI" category.
Alternatively, view huff alternatives based on common mentions on social networks and blogs.
-
tensor-safe
A Haskell framework to define valid deep learning models and export them to other frameworks like TensorFlow JS or Keras. -
moo
Genetic algorithm library for Haskell. Binary and continuous (real-coded) GAs. Binary GAs: binary and Gray encoding; point mutation; one-point, two-point, and uniform crossover. Continuous GAs: Gaussian mutation; BLX-α, UNDX, and SBX crossover. Selection operators: roulette, tournament, and stochastic universal sampling (SUS); with optional niching, ranking, and scaling. Replacement strategies: generational with elitism and steady state. Constrained optimization: random constrained initialization, death penalty, constrained selection without a penalty function. Multi-objective optimization: NSGA-II and constrained NSGA-II. -
simple-genetic-algorithm
Simple parallel genetic algorithm implementation in pure Haskell -
cv-combinators
Functional Combinators for Computer Vision, currently using OpenCV as a backend -
simple-neural-networks
Simple parallel neural networks implementation in pure Haskell -
HaVSA
HaVSA (Have-Saa) is a Haskell implementation of the Version Space Algebra Machine Learning technique described by Tessa Lau. -
Etage
A general data-flow framework featuring nondeterminism, laziness and neurological pseudo-terminology. -
CarneadesDSL
An implementation and DSL for the Carneades argumentation model. -
simple-genetic-algorithm-mr
Fork of simple-genetic-algorithm using MonadRandom -
attoparsec-arff
An attoparsec-based parser for ARFF files in Haskell
Updating dependencies is time-consuming.
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of huff or a related project?
README
Huff
Huff is an implementation of the fast-forward forward-chaining planner in
Haskell. The main interface is the quasi-quoter huff
, which allows the user to
define re-usable domains that can be used with the planner to solve different
problems.
Example
Consider the blocks world planning domain from Chapter
11 of "Artificial
Intelligence: A Modern Approach". The domain includes two actions, Move
and
MoveToTable
, four objects, A
, B
, C
, Table
, and two predicates, On
and Clear
. Embedding the domain in Haskell using huff
looks like this:
module Main where
import Huff
[huff|
domain BlocksWorld {
object Obj = A | B | C | Table
predicate on(Obj,Obj), clear(Obj)
operator Move(b: Obj, x: Obj, y: Obj) {
requires: on(b,x), clear(b), clear(y)
effect: on(b,y), clear(x), !clear(y)
}
operator MoveToTable(b: Obj, x: Obj) {
requires: on(b,x), clear(b)
effect: on(b,Table), clear(x)
}
}
|]
The quasi-quoter will introduce the following declarations:
- A data declaration for the
Obj
object - A data declaration for the
BlocksWorld
domain, that will consist of two constructorsMove :: Obj -> Obj -> Obj -> BlocksWorld
andMoveToTable :: Obj -> Obj -> BlocksWorld
- Two classes called
Has_on
andHas_clear
, that define theon
andclear
functions, respectively - Instances of the two
Has
classes forLiteral
andTerm
- The
blocksWorld
function of the type[Literal] -> [Term] -> Spec BlocksWorld
The blocksWorld
function accepts the initial state and goal, and produces a
Spec BlocksWorld
value that can be used in conjunction with the findPlan
function to attempt to find a plan. For example, the problem specified in
chapter 11 Russel and Norvig can be solved as follows:
main =
do mb <- findPlan $ blocksWorld [ on A Table, on B Table, on C Table, clear A
, clear B, clear C ]
[on A B, n B C]
print mb
Running the example will produce the output:
$ find dist-newstyle -name blocksWorld -type f -exec {} \;
Just [MoveTo B Table C, MoveTo A Table B]