{"id":22840580,"url":"https://github.com/shouya/ckini","last_synced_at":"2025-04-28T10:49:48.088Z","repository":{"id":57483173,"uuid":"336478640","full_name":"shouya/ckini","owner":"shouya","description":"A miniKanren implementation in Elixir","archived":false,"fork":false,"pushed_at":"2023-01-02T14:11:58.000Z","size":177,"stargazers_count":5,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-20T08:58:23.764Z","etag":null,"topics":["elixir","macro","minikanren"],"latest_commit_sha":null,"homepage":"https://hexdocs.pm/ckini","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shouya.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-02-06T07:12:38.000Z","updated_at":"2023-07-25T15:18:52.000Z","dependencies_parsed_at":"2023-02-01T03:01:09.028Z","dependency_job_id":null,"html_url":"https://github.com/shouya/ckini","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shouya%2Fckini","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shouya%2Fckini/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shouya%2Fckini/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shouya%2Fckini/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shouya","download_url":"https://codeload.github.com/shouya/ckini/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251299489,"owners_count":21567231,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["elixir","macro","minikanren"],"created_at":"2024-12-13T01:12:46.496Z","updated_at":"2025-04-28T10:49:48.059Z","avatar_url":"https://github.com/shouya.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ckini\n\nA miniKanren implementation in Elixir.\n\n## Usage\n\n``` elixir\n  defmodule Demo do\n    import Ckini\n    alias Ckini.Var\n\n    def readme_demo do\n      run {x, y, z} do\n        # simple goal\n        eq(y, 1)\n        # a conde goal\n        conde do\n          _ -\u003e eq(y, 2)\n          _ -\u003e eq(z, 3)\n          _ -\u003e eq(x, 4)\n        end\n        # you can create logic variable with fresh\n        fresh t do\n          eq(x, [y, z, t, \"hello\"])\n        end\n      end\n    end\n  end\n\n  test \"demo in README should work correctly\" do\n    assert [{[1, 3, :_0, \"hello\"], 1, 3}] == Demo.readme_demo()\n  end\n```\n\n\nAPI available: `run/2`, `run/3`, `eq` (`===`), `neq` (`=/=`), `cond{e,i,a,u}`, `match{e,i,a,u}`, `all`, `project`, `succ`, `fail`, `symbolo`, `absento`, `copy_termo`, `anyo`, `onceo`.\n\nCheck out the https://github.com/shouya/ckini/blob/master/test/*_test.exs for more usage examples.\n\n## Feature highlights\n\n- arithmetic operators (See `Ckini.Arithmetic`)\n- introduction of fresh variables via `cond{e,i,a,u}`\n- pattern matching with `match{e,i,a,u}` macros\n- inequality (`neq`) constraint\n- symbolo constraint\n- absento constraint\n\n## References\n\n- The Reasoned Schemer by Daniel P. Friedman, et al.\n- Relational Programming in miniKanren by William E. Byrd\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshouya%2Fckini","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshouya%2Fckini","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshouya%2Fckini/lists"}