当前位置:首页 > 开发 > 研发管理 > 正文

clojure逻辑编程框架——core.logic入门

发表于: 2014-03-10   作者:Aaron5   来源:转载   浏览次数:
摘要: core.logic是miniKanren的一个实现。miniKanren中一个重要的概念就是goal,根据goal来推测可能的结果,这就是它的核心概念。 一、Core.logic的基本语法: (run* [logic-variable] logic-expressions) ;;或者 (run 1 [logic-variable] logic-expre
core.logic是miniKanren的一个实现。miniKanren中一个重要的概念就是goal,根据goal来推测可能的结果,这就是它的核心概念。

一、Core.logic的基本语法:

 
(run* [logic-variable]
   logic-expressions)
;;或者
(run 1 [logic-variable]
   logic-expressions)



二、三个核心操作符号:fresh, ==, conde。
其实用几段最简单的代码就可以明白。

user=>(run* [q] (fresh [a b ] (== a 1) (== b 2) (== q [a b])))
([1 2])
user=>(run* [q] (fresh [a b] (conde [(== 1 a)] [(== 2 b)]) (== q a) (== q b)))
(1 2)



其中fresh就相当于let,定义局部变量。==就是逻辑相等。conde和cond有点像,用一段伪代码表示就是

(run* [q]
   (OR
     [goal1 AND goal2 AND ...]
     ...))


三、来几个高级的goal:conso,resto,membero。其中结尾带o,a,u,e就是一种命名规范而已,为了和clojure自带的cons,rest,member区分开来。
user=> (run* [q] (membero q [1 2 3]))
(1 2 3)
user=> (run* [q] (resto q [1 2 3]))
((_0 1 2 3))
user=> (run* [q] (conso 1 [2 3] q))
((1 2 3))

clojure逻辑编程框架——core.logic入门

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
英文原 getting started with clojure,翻译:开源中国 我将尝试教一些人(主要是Python开发者,在OS
《Clojure编程》 基本信息 作者: (美)Chas Emerick(蔡司埃默里克) Brian Carper(布赖恩卡珀) Chris
转载自网址: http://xumingming.sinaapp.com/302/clojure-functional-programming-for-the-jvm-cloj
Clojure入门教程: Clojure – Functional Programming for the JVM中文版 发表于 2011 年 12 月 07
简介: Lisp 是一种编程语言,以表达性和功能强大著称,但人们通常认为它不太适合应用于一般情况。C
本文改编自我在公司内部分享的《Clojure简介与应用》的讲稿。 1. OOP的本质? 面向对象编程(OOP)
以前听说过LISP函数式编程,也听人说Erlang的牛逼,接触了Clojure才知道,原来Clojure就是JVM中的Er
模糊逻辑系统框架 1. 框架组成 图 模糊逻辑系统构成 (1)模糊产生器 将实值收入转换成模糊输入。
JFinal的框架的逻辑架构是十分简单的,说更加简单一点,它是简单的经典的MVC模式。 它大致分为6个步
模糊逻辑系统框架 1. 框架组成 图 模糊逻辑系统构成 (1)模糊产生器 将实值收入转换成模糊输入。
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号