Skip to content

Instantly share code, notes, and snippets.

@rm-hull rm-hull/classic-ai.cljs
Last active Dec 24, 2015

Embed
What would you like to do?
Adapted to clojurescript flavor, derived from https://github.com/clojure/core.logic/wiki/Examples
(ns classic-ai-example
(:require-macros [cljs.core.logic.macros :as m])
(:use [cljs.core.logic :only [-take*]]))
(m/defne moveo [before action after]
([[:middle :onbox :middle :hasnot]
:grasp
[:middle :onbox :middle :has]])
([[pos :onfloor pos has]
:climb
[pos :onbox pos has]])
([[pos1 :onfloor pos1 has]
:push
[pos2 :onfloor pos2 has]])
([[pos1 :onfloor box has]
:walk
[pos2 :onfloor box has]]))
(m/defne cangeto [state out]
([[_ _ _ :has] true])
([_ _] (m/fresh [action next]
(moveo state action next)
(cangeto next out))))
(println
(m/run 1 [q]
(cangeto [:atdoor :onfloor :atwindow :hasnot] q))) ; (true)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.