Skip to content

Instantly share code, notes, and snippets.

@arwagner
Created November 15, 2011 17:01
Show Gist options
  • Save arwagner/1367607 to your computer and use it in GitHub Desktop.
Save arwagner/1367607 to your computer and use it in GitHub Desktop.
fact("x"); query("x"); #=> ["x"]
fact("x"); query("y"); #=> []
fact("is_cool(fred)"); query("is_cool(fred)"); #=> ["is_cool(fred)"]
fact("is_cool(parent_of(fred),on(saturdays))"); query("is_cool(parent_of(fred),on(saturdays))"); #=> ["is_cool(parent_of(fred),on(saturdays))"]
fact("x"); query(":y"); #=> [{":y"=>"x"}]
fact("is_cool(fred)"); query("is_cool(:y)"); #=> [{":y"=>"fred"}]
fact("is_cool(parent_of(fred),on(saturdays))"); query("is_cool(parent_of(fred),:time)"); #=> [{":time"=>"on(saturdays)"}]
fact("is_cool(fred,saturdays)"); query("is_cool(fred)"); #=> []
fact("is_cool(fred,saturdays)"); query("is_cool(fred,:time)"); #=> [{":time"=>"saturdays"}]
fact("is_cool(parent_of(fred),on(saturdays))"); query("is_cool(parent_of(:x),on(saturdays))"); #=> [{":x"=>"fred"}]
fact("is_cool(parent_of(fred),on(saturdays))"); query("is_cool(parent_of(:x),on(:days))"); #=> [{":x"=>"fred",":days"=>"saturdays"}]
fact("is_cool(fred)"); fact("is_cool(molly)"); query("is_cool(:kid)"); #=> [{":kid"=>"fred"},{":kid"=>"molly"}]
rule("is_cool(:x)") do
rule("friends(:x,:y)") do
fact("is_cool(:y)")
end
end
fact("is_cool(fred)")
fact("friends(fred,molly)")
query("is_cool(:x)") #=> [{":x"=>"fred"},{":x"=>"molly"}]
fact("friends(molly,susan)")
query("is_cool(:x)") #=> [{":x"=>"fred"},{":x"=>"molly"},{":x"=>"susan"}]
rule("is_cool(:x)") { fact("gets_invited_to_parties(:x)") }
query("gets_invited_to_parties(:x)"); #=> [{":x"=>"fred"},{":x"=>"molly"},{":x"=>"susan"}]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment