Python中jsonlike对象的声明性编程
inference-logic的Python项目详细描述
推理逻辑
这个项目的目标是探索如何编写一个 允许程序员以声明方式编码的一组特性 在原生Python中。在
代码松散地基于Prolog,但是没有使用Prolog Term/functor结构它使用JSON类似的dicts和tuples。在
这个项目的成功是由 99 problems已解决,以使代码专注于交付 功能和非自行车脱落
此代码是实验性的,不完整。不要在你的 工作还是上学!如果你想用认真的,经过测试的 Python中的声明性工具使用优秀的pyDatalog。在
- 免费软件:麻省理工学院许可证
- 文档:https://json-inference-logic.readthedocs.io。在
tldr
frominference_logicimportVariable,Rule,searchX,Y,Z,C,P=Variable.factory("X","Y","Z","C","P")db=[dict(parent="Abe",child="Homer"),dict(parent="Homer",child="Lisa"),dict(parent="Homer",child="Bart"),dict(parent="Homer",child="Maggie"),Rule(dict(ancestor=X,descendant=Z),dict(parent=X,child=Z)),Rule(dict(ancestor=X,descendant=Z),dict(parent=X,child=Y),dict(ancestor=Y,descendant=Z),),]query=dict(ancestor=P,descendant=C)results=search(db,query)assertnext(results)=={C:"Lisa",P:"Abe"}assertnext(results)=={C:"Bart",P:"Abe"}assertnext(results)=={C:"Maggie",P:"Abe"}assertnext(results)=={C:"Homer",P:"Abe"}assertnext(results)=={C:"Lisa",P:"Homer"}assertnext(results)=={C:"Bart",P:"Homer"}assertnext(results)=={C:"Maggie",P:"Homer"}
学分
此包是用Cookiecutter和audreyr/cookiecutter-pypackage项目模板创建的。在
它最初是受py4fun的启发,这里有些代码是直接来的 从这个项目。在
感谢kclaurelie帮助解决基本问题 困扰我好几个月的问题!在
历史
- PyPI的第一个版本。在
- 项目
标签: