Giter VIP home page Giter VIP logo

mu-kanren's Introduction

mu-kanren

Haskell implementation of μKanren, a minimalist language in the miniKanren family of relational (logic) programming languages.

It is not meant to be an actual runnable program, but rather a core library to experiment with on the repl.

Build & use

$ cabal new-repl

Examples

Some examples taken from the repository of the original Scheme implementation.

λ> takeS 2 aAndB
([(#1, 5), (#0, 7)], 2)
([(#1, 6), (#0, 7)], 2)

λ> takeS 1 (fives (num 5))
([], 0)

-- limit number of recursive calls
-- to avoid divergence.
λ> takeS' 1 10 (fives (num 3))
λ>

λ> takeS 2 callAppendo
([(#0, (#1 #2 #3)), (#2, #3), (#1, ())], 4)
([(#0, (#1 #2 #3)), (#2, #6), (#5, ()), (#3, (#4 . #6)), (#1, (#4 . #5))], 7)

λ> run 2 callAppendo
(() _.0 _.0)
((_.0) _.1 (_.0 . _.1))

λ> runAll appendoo
(() (1 2 3 4 5))
((1) (2 3 4 5))
((1 2) (3 4 5))
((1 2 3) (4 5))
((1 2 3 4) (5))
((1 2 3 4 5) ())



mu-kanren's People

Contributors

fsestini avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

iomeone

mu-kanren's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.