Popularity
3.3
Declining
Activity
0.0
Stable
4
2
0

Monthly Downloads: 5
Programming language: Haskell
License: LicenseRef-LGPL
Tags: AI     Control     Monads     Constraints     Failure    
Latest version: v1.4

nondeterminism alternatives and similar packages

Based on the "AI" category

Do you think we are missing an alternative of nondeterminism or a related project?

Add another 'AI' Package

README

Nondeterminism

Build Status

This package is available via Hackage where its documentation resides.

This provides nondeterministic computations in Haskell. It implements an Amb monad in which you can perform nondeterministic choices along with a monad transformer version, AmbT.

Amb

An example which finds Pythagorean triplets up to a certain size, project Euler problem 9.

import Control.Monad
import Control.Monad.Amb
pyTriple :: (Num t, Ord t) => t -> Amb r (t, t, t)
pyTriple n = do a <- anIntegerBetween 1 n
                b <- anIntegerBetween (a + 1) n
                c <- anIntegerBetween (b + 1) n
                when (a*a + b*b /= c*c) empty
                return (a,b,c)
length $ allValues $ pyTriple 100

More examples can be found in tests/test.hs.

Future

  • allValues is not lazy in its return value