我正在与 kanren 合作进行逻辑编程,这对我来说是全新的。我已经了解如何建立关系,但我想与多个特征建立关系,例如适合这个描述:
- 定义关系食物并规划这些事实:鳄梨、胡萝卜、番茄和西兰花是食物。
- 定义关系颜色并对这些事实进行编程:胡萝卜是橙色的,鳄梨是绿色的,西兰花是绿色的,番茄是红色的。
- 定义一个喜欢的关系并对这些事实进行编程:Jeff 喜欢胡萝卜、鳄梨和棒球,Bill 喜欢鳄梨和棒球,Steve 喜欢番茄和棒球,Mary 喜欢花椰菜,而 Peter 喜欢棒球。
第一部分非常简单,这是我到目前为止所拥有的,我相信这是正确的。
food = Relation()
color = Relation()
likes = Relation()
fact(food, "avocado")
fact(food, "carrot")
fact(food, "tomato")
fact(food, "broccoli")
第二部分是令人困惑的地方,但我认为当我查看可以在文档中找到的父示例时它应该是正确的。
fact(color, ("green", "avocado"))
fact(color, ("carrot", "orange"))
fact(color, ("broccoli", "green"))
fact(color, ("tomato", "red"))
第三部分是我完全迷失的地方,我认为这是不正确的,因为我尝试查询它。这是我到目前为止所拥有的:
fact(likes, ("Jeff", "avocado", "carrot", "baseball"))
fact(likes, ("Bill", "avocado", "baseball"))
fact(likes, ("Steve", "tomato", "baseball"))
fact(likes, ("Mary", "broccoli"))
fact(likes, ("Peter", "baseball"))
关于如何做第三部分的任何建议?