GithubHelp home page GithubHelp logo

ckanren's Introduction

Copyright (C) 2013-4 Claire Alvis

Copyright (C) 2011-2013 Daniel P. Friedman, Oleg Kiselyov, Claire E. Alvis, Jeremiah J. Willcock, Kyle M. Carter, William E. Byrd

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


cKanren

This library implements miniKanren (http://minikanren.org) with an extensible framework for defining constraints.

How to install

cKanren can be installed as a collection within Racket (http://racket-lang.org) as follows:

  • git clone git://github.com/calvis/cKanren.git
  • cd cKanren/cKanren
  • raco link .
  • raco setup cKanren

After setup finishes, you will be able to use miniKanren, #lang cKanren, and all constraint libraries that ship with cKanren.

For users

If you are interested in writing miniKanren programs, you can (require cKanren/miniKanren) for standard miniKanren definitions. You can also require constraint libraries like neq as (require cKanren/neq).

Stable constraint libraries

The following libraries have been tested extensively.

  • Tree unification cKanren/tree-unify
  • Disequality constraints cKanren/neq
  • Absento, symbolo, and numbero cKanren/absento

All other constraints libraries are experimental.

ckanren's People

Contributors

acfoltzer avatar calvis avatar eholk avatar leifandersen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ckanren's Issues

alphaKanren is broken

This will probably be an easy fix, but I had to thread events through the program so they're probably not being used properly yet.

cKanren is not an actual racket package yet

Need to make sure all the package/collection info is up to date, that it depends on the correct version of racket, and that it is officially listed where it should be listed.

never-pairo requires a domain

> (run 1 (q) (never-pairo q))

Exception in verify-all-bound: Constrained variable ~s without domain with irritant #(q)
Type (debug) to enter the debugger.

You dun goofed.

cKanren fd.rkt

Hi,

I stumbled on your repo and was absolutely amazed by the finite domain constraints extensions to minikanren. I've been following minikanren many years ago but these new features make it very interesting for practical usage.

Is this repo still evolving? I was trying to make timesfd work and I saw it was commented out and I need a special macro that I don't have to try the code that is commented out: lambdam@

Thanks for helping

Too many branches

Most of the branches I have in this repo are pointless now, I should store them privately or rewrite them as tags.

Framework does not include enforce events

This will require a bit of re-designing, since libraries like finite domain depend on a two-phase enforce; one for constraints over variables in the answer, and one for constraints over variables not in the answer. The former should be able to generate as many answers as possible, the latter should only generate one answer to ensure consistency.

[How-To]How to use it with Geiser in Emacs

standard-module-name-resolver: collection not found
  for module path: ckanren/miniKanren
  collection: "ckanren"
  in collection directories:
   /home/abrahamx91/.racket/6.1/collects
   /usr/share/racket/collects
   /home/abrahamx91/.emacs.d/elpa/geiser-20141006.1147/scheme/racket/
   /home/abrahamx91/Profession/Git/cKanren/
   ... [146 additional linked and package directories]



Expression evaluated was:



(require ckanren/miniKanren)

I did install it as guided in the README. The feedback from raco showed that the installation is correct.

So to use this correctly, do I have to do some configurations with Emacs side?

Set constraint library is broken

This will take some major redesigning with the change to enforce events (i.e. I can't have that "nice" cycle for enforcing anymore).

Extensible !=

For libraries like eigen and sets, an extensible disequality is practically mandatory for clarity and correctness.

symbolo and numbero missing?

After cloning from https://github.com/calvis/cKanren.git, running the raco link and setup steps, and requiring

(require cKanren/miniKanren)
(require cKanren/absento)

I can see absento and the basic miniKanren stuff. However symbolo and numbero are not defined although the README.md suggests that they should be.

racket v6.1.1.

Warning: This could well be user error as I'm just starting out with cKanren.

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.