精华内容
下载资源
问答
  • AutoLisp示例代码

    2017-12-26 17:33:41
    示例代码包括露天矿山高压线自动标绘、图纸坐标线自动标绘、露天坑边坡线自动标绘、点集范围圈定和土岩方体积绘制与计算。
  • Common Lisp 备忘单 高级循环 局部变量和函数 局部变量 局部函数 更多关于函数 Lambda 表达式 功能参数 多个值 申请和Funcall 映射函数 更多关于列表 列出函数 推动、弹出和反向 关联列表 更多关于序列 数组 序列...
  • Common Lisp 中的示例员工数据库管理系统 用法 (ql:quickload :cl-employee-db) (cl-employee-db:start :port 3000 ) 在浏览器中访问http://localhost:3000 。 安装 cd ~/quicklisp/local-projects git clone ...
  • LISP编程举例

    2020-12-21 10:00:50
    Lisp是一门历史悠久的语言,全名叫LIStProcessor,也就是“表处理语言”,它是由JohnMcCarthy于1958年就开始设计的一门语言。和Lisp同时期甚至更晚出现的许多语言如Algo等如今大多已经消亡,又或者仅仅在一些特定的...

    Lisp

    是一门历史悠久的语言,全名叫

    LISt

    Processor

    ,也就是“表处理语言”

    ,它是由

    John

    McCarthy

    1958

    年就开始设计的一门语言。

    Lisp

    同时期甚至更晚出现的许多语言如

    Algo

    等如今大多已经消亡,

    又或者仅仅在一些特定的场合有一些微不足道的用途,

    到现在还广为

    人知的恐怕只剩下了

    Fortran

    COBOL

    。但唯独

    Lisp

    ,不但没有随着时间而衰退,反倒是

    一次又一次的焕发出了青春,从

    Lisp

    分支出来的

    Scheme

    ML

    等语言在很多场合的火爆程

    度甚至超过了许多老牌明星。那么这颗常青树永葆青春的奥秘究竟在哪里呢?

    如果你只接触过

    C/C++

    Pascal

    这些“过程式语言”的话,

    Lisp

    可能会让你觉得十分不同寻

    常,首先吸引你眼球(或者说让你觉得混乱的)一定是

    Lisp

    程序中异常多的括号,当然从

    现在的角度来讲,

    这种设计的确对程序员不大友好,

    不过考虑到五六十年代的计算机处理能

    力,简化语言本身的设计在那时算得上是当务之急了。

    Lisp

    的基本语法很简单,它甚至没有保留字(有些语言学家可能对这一点有异议,别怕,我

    听你们的)

    ,它只有两种基本的数据,仅有一种基本的语法结构就是表达式,而这些表达式

    同时也就是程序结构,

    但是正如规则最简单的围棋却有着最为复杂的变化一样,

    Lisp

    使用最

    基本的语言结构定义却可以完成其它语言难于实现的、最复杂的功能。

    废话少说,现在我们就来看看

    Lisp

    语言中的基本元素。

    Lisp

    的表达式是一个原子

    (atom)

    或表

    (list)

    ,原子

    (atom)

    是一个字母序列,如

    abc

    ;表是由零个

    或多个表达式组成的序列,表达式之间用空格分隔开,放入一对括号中,如:

    abc

    ()

    (abc

    xyz)

    (a

    b

    (c)

    d)

    最后一个表是由四个元素构成的,其中第三个元素本身也是一个表。

    正如算数表达式

    1+1

    有值

    2

    一样,

    Lisp

    中的表达式也有值,如果表达式

    e

    得出值

    v

    ,我们说

    e

    返回

    v

    。如果一个表达式是一个表,那么我们把表中的第一个元素叫做操作符,其余的元

    素叫做自变量。

    正如欧几里德的几何世界中有五个公理一样,我们在这里给出

    Lisp

    世界中的

    7

    个公理(基

    本操作符)

    (quote

    x)

    返回

    x

    ,我们简记为

    'x

    (atom

    x)

    x

    是一个原子或者空表时返回原子

    t

    否则返回空表

    ()

    Lisp

    中我们习惯用原子

    t

    表示真,而用空表

    ()

    表示假。

    >

    (atom

    'a)

    t

    >

    (atom

    '(a

    b

    c))

    ()

    >

    (atom

    '())

    展开全文
  • 常见的lisp烹饪书示例 常见Lisp食谱中的示例
  • 可在上获得《我的爱人Lisp或精明程序员的秘密武器》一书的开源示例。我的书可在线免费阅读,并且该书的PDF已获得Creative Common的许可无需修改即可共享或商业重复使用:这意味着鼓励您与朋友和同事共享PDF副本(请...
  • lisp 代码示例

    2012-04-20 12:44:12
    非原创,抄来的: http://www.newsmth.net/nForum/#!article/FuncProgram/2185刚学lisp不久:)有些地方还不是很清楚,所以用了比较笨的办法,还请大家多多指教 //bow ...


    非原创,抄来的:

    http://www.newsmth.net/nForum/#!article/FuncProgram/2185



    刚学lisp不久:)有些地方还不是很清楚,所以用了比较笨的办法,还请大家多多指教
    //bow
      
    ;; s 开始状态
    ;; 结束状态集
    ;; rules 规则集
    ;; delta 转移函数
      
    ;; search.lisp
    ;; 22 March 2004
      
    (defpackage search-base
       (:export BFS DFS)
       (:use common-lisp))
    (in-package search-base)
      
    (defvar finish-status '()
       "The finished status set")
    (defvar rules-set '())
    (defvar expand-func #'(lambda () ()))
    (defvar update-open-lst #'(lambda () ()))
      
    (defun search-init (K rules delta lstop)
       "initialize the global values used by search base"
       (setq finish-status K)
       (setq rules-set rules)
       (setq expand-func delta)
       (setq update-open-lst lstop)
       t)
      
    (defun search-start (open closed)
       (let ((q (first open))
             (seq (rest open)))
         (cond ((null open) nil)
               ((find q finish-status :test 'equal) (list seq (cons q closed)))
               (t (search-start (funcall
                                 update-open-lst
                                 seq
                                 (expand-vertex q rules-set expand-func (cons q closed))
                                 )
                                (cons q closed))))))
      
    ;; s 开始状态
    ;; 结束状态集
    ;; rules 规则集
    ;; delta 转移函数
      
    ;; 宽度优先
    (defun BFS (s K rules delta)
       "Breadth first search"
       (let ((lstop #'(lambda (lst1 lst2)
                        (append lst1 lst2)))
             )
         (search-init K rules delta lstop)
         (search-start (list s) nil)))
      
    ;; 深度优先
    (defun DFS (s K rules delta)
       "Deep first search"
       (let ((lstop #'(lambda (lst1 lst2)
                       (append lst2 lst1)))
             )
         (search-init K rules delta lstop)
         (search-start (list s) nil)))
      
    (defun expand-vertex (vertex rules delta closed)
       (let ((lst (mapcar
                   #'(lambda (r)
                       (let ((v (funcall delta vertex r))
                             )
                         (cond ((find v closed :test 'equal) nil)
                               (t v))))
                   rules))
             )
         (remove nil lst)))
      
    (defun test-delta (v r)
       (+ v r))
      
    ;; 下面是用分水问题来作测试
    ;; water.lisp
      
    (load "search")
      
    (defvar rules '(
                   (0 1)
                   (0 2)
                   (1 0)
                   (1 2)
                   (2 0)
                   (2 1)
                   ))
      
    (defvar limits '(8 5 3))
    (defvar start '(8 0 0))
    (defvar finish '(
                    (4 4 0)
                    ))
      
    (defun index(lst idx)
       (cond ((equal idx 0) (car lst))
             (t (index (cdr lst) (1- idx)))))
      
    (defun setidx-base(lst idx val ret)
       (let ((first-lst (car lst))
             (rest-lst (cdr lst))
             )
         (cond ((eql 0 idx) (append ret (cons val rest-lst)))
               (t (setidx-base
                   rest-lst
                   (1- idx)
                   val
                   (append ret (list first-lst)))))))
      
    (defun setidx(lst idx val)
       (setidx-base lst idx val nil))
      
    (defun pour-water (q src dst)
       (let* ((src-wt (index q src))
              (dst-wt (index q dst))
              (empty (- (index limits dst) dst-wt))
              )
         (cond ((equal 0 src-wt) q)
               ((> src-wt empty)
                (let* ((new (setidx q src (- src-wt empty)))
                       (new (setidx new dst (index limits dst)))
                       )
                  new))
               (t (let* ((new (setidx q src 0))
                         (new (setidx new dst (+ src-wt dst-wt)))
                         )
                    new)))))
      
    (defun pour (q r)
       (pour-water q (first r) (second r)))
      
    (print (search-base:DFS start finish rules 'pour))
      
    (quit)
    --
    (defun power-set (set)
       (if (null set) '(())
         (let ((pset-of-rest (power-set (cdr set))))
           (append
           (mapcar #'(lambda (subset) (cons (car set) subset))  
                   pset-of-rest) pset-of-rest))))

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/133735/viewspace-721770/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/133735/viewspace-721770/

    展开全文
  • lisp编程算法 用ANSI Common Lisp中的示例编写高效的程序 入门 make init ( setq inferior-lisp-program " /usr/local/bin/sbcl " )
  • 示例项目展示了如何在 Docker 容器上运行/开发 Common Lisp Web 应用程序。 该存储库包括 2 种类型的项目。 在 Docker 上运行 Clack 应用程序(端口为5000 ) 使用 Qlot 管理 Common Lisp 库 允许在不重新启动...
  • 如果您喜欢本指南,请为该存储库加注星标!
  • This page, and the pages it links to, contain text of the Common Lisp book Practical Common Lisp published by Apress These pages now contain the final text as it appears in the book. If you find ...
  • 去autolisp学校 用于技术文档课程的学校的Autolisp和脚本示例
  • 1. 冒泡排序 (defun bubble-sort (arr) (dotimes (i (1- (length arr)) arr) (dotimes (j (- (length arr) i 1)) (if (> (elt arr j) (elt arr (1+ j))) ... (rotatef (elt arr j) (elt arr (1+ ...

    1. 冒泡排序

    (defun bubble-sort (arr)
       (dotimes (i (1- (length arr)) arr)
         (dotimes (j (- (length arr) i 1))
           (if (> (svref arr j) (svref arr (1+ j)))
             (rotatef (svref arr j) (svref arr (1+ j)))))))
    

    以下是冒泡排序的尾递归实现,在部分实现中需要编译后运行,否则可能会栈溢出:

    (defun bubble-sort-2 (arr &optional (start 0))
      (if (>= start (1- (length arr)))
        arr
        (loop for i from (1- (length arr)) above start
              when (< (svref arr i) (svref arr (1- i))) do (rotatef (svref arr i) (svref arr (1- i)))
              finally (return (bubble-sort-2 arr (1+ start))))))
    

    2.插入排序

    (defun insert-sort (arr)
      (dotimes (i (1- (length arr)) arr)
        (loop for j from (1+ i) downto 1 do (if (< (svref arr j) (svref arr (1- j)))
                                              (rotatef (svref arr j) (svref arr (1- j)))
                                              (return)))))
    

    以下是插入排序的尾递归实现,在部分实现中需要编译后运行,否则可能会栈溢出:

    (defun insert-sort-2 (arr &optional (start 0))
      (if (= start (length arr))
        arr
        (loop for i from start downto 1 until (> (svref arr i) (svref arr (1- i))) do (rotatef (svref arr i) (svref arr (1- i)))
              finally (return (insert-sort-2 arr (1+ start))))))
    

    3.选择排序

    (defun select-sort (arr)
      (dotimes (i (1- (length arr)) arr)
        (let ((min-index i))
          (loop for j from i to (1- (length arr)) do (if (< (svref arr j) (svref arr min-index)) (setf min-index j)))
          (rotatef (svref arr i) (svref arr min-index)))))
    

    以下是选择排序的尾递归实现,在部分实现中需要编译后运行,否则可能会栈溢出:

    (defun select-sort-2 (arr &optional (start 0))
      (if (>= start (1- (length arr)))
        arr
        (loop with min-index = start for i from start to (1- (length arr)) do (if (< (svref arr i) (svref arr min-index)) (setf min-index i))
              finally (progn (rotatef (svref arr min-index) (svref arr start))
                             (return (select-sort-2 arr (1+ start)))))))
    

    4.希尔排序

    (defun shell-sort (arr)
      (do ((gap (floor (length arr) 2) (floor gap 2)))
        ((< gap 1) arr)
        (dotimes (i gap)
          (dotimes (k (1- (floor (length arr) gap)))
            (loop for j from (+ i (* gap k)) downto 0 by gap do (if (< (svref arr (+ j gap)) (svref arr j))
                                                                     (rotatef (svref arr j) (svref arr (+ j gap)))
                                                                     (return)))))))
    

    5.归并排序

    (defun merge-sort (arr)
      (if (< (length arr) 2)
        arr
        (let ((arr-1 (merge-sort (subseq arr 0 (floor (length arr) 2))))
              (arr-2 (merge-sort (subseq arr (floor (length arr) 2)))))
          (merge 'vector arr-1 arr-2 #'<))))
    

    6.快速排序

    (defun quick-sort (arr)
      (labels ((q-sort (vec l r)
                       (let ((i l)
                             (j r)
                             (p (svref vec (round (+ l r) 2))))
                         (loop while (<= i j) 
                               do (progn
                                    (loop while (< (svref vec i) p) do (incf i))
                                    (loop while (> (svref vec j) p) do (decf j))
                                    (when (<= i j)
                                      (rotatef (svref vec i) (svref vec j))
                                      (incf i)
                                      (decf j))))
                         (if (>= (- j l) 1) (q-sort vec l j))
                         (if (>= (- r i) 1) (q-sort vec i r)))
                       vec))
        (q-sort arr 0 (1- (length arr)))))
    

    7.基数排序(不支持负数)

    (defun radix-sort (arr &optional (radix 0) (max-radix nil))
      (let ((bucket (make-array 16 :initial-element nil))
            (max-radix (or max-radix (reduce #'max arr :key #'integer-length))))
        (loop for e across arr do (push e (aref bucket (ldb (byte 4 (* radix 4)) e))))
        (let ((bucket-seq (coerce (reduce #'nconc bucket :key #'reverse) 'vector)))
          (if (<= max-radix radix)
            bucket-seq
            (radix-sort bucket-seq (1+ radix) max-radix)))))
    

    8.堆排序

    (defun heap-sort (arr)
      (labels ((heapify (seq current-index size)
                        (let ((left (+ (* 2 current-index) 1))
                              (right (+ (* 2 current-index) 2))
                              (max-index current-index))
                          (if (and (< left size) (> (svref seq left) (svref seq max-index))) (setf max-index left))
                          (if (and (< right size) (> (svref seq right) (svref seq max-index))) (setf max-index right))
                          (when (/= current-index max-index)
                            (rotatef (svref seq max-index) (svref seq current-index))
                            (heapify seq max-index size)))))
        (loop for i from (1- (floor (length arr) 2)) downto 0 do (heapify arr i (length arr)))
        (loop for j from (1- (length arr)) above 0 
              do (progn (rotatef (svref arr 0) (svref arr j))
                        (heapify arr 0 j))
              finally (return arr))))
    

    9.测试代码

    (defun test-random ()
      (let ((funs (list 'bubble-sort 'bubble-sort-2 'insert-sort 'insert-sort-2 
                        'select-sort 'select-sort-2 'quick-sort 'heap-sort 
                        'radix-sort 'shell-sort 'merge-sort))
            (random-seq (coerce (loop for i from 1 to 10000 collect (random 10000)) 'vector)))
        (dolist (fun funs)
          (if (not (typep (symbol-function fun) 'compiled-function)) (compile fun))
          (format t "-----------------~%test ~A ...~%" (symbol-name fun))
          (if (equalp (sort (copy-seq random-seq) #'<) (time (funcall (symbol-function fun) (copy-seq random-seq))))
            (format t "~A test ok~%" (symbol-name fun))
            (format t "~A test failed~%" (symbol-name fun))))))
    
    展开全文
  • Lisp示例代码 此存储库包含John C. Mitchell Concepts in Programming Languages中Concepts in Programming Languages Part 1-3 (Lisp: Functions, Recursion, and Lists)中的源代码。 安装Clisp 在Ubuntu / ...
  • 请参阅下面的视频和示例,以了解使用该语言已经开发了多少功能。 操作简单 (+ 1 2 ) ; 3 (* 2 2 2 ) ; 8 (/ 4 2 ) ; 2 (- 5 3 ) ; 2 (+ (* 2 2 ) (/ 30 5 )) ; 10 (+ " Hello, " " world " " ! " ) ; Hello, ...
  • http://stackoverflow.com/questions/547436/whats-the-difference-between-eq-eql-equal-and-equalp-in-common-lisp S.K. 转载于:https://www.cnblogs.com/neoshen/archive/2013/05/06/3063293.html

    (eq x y) is true if and only if x and y are the same identical object.

    The eql predicate is true if its arguments are eq, or if they are numbers of the same type with the same value, or if they are character objects that represent the same character.

    The equal predicate is true if its arguments are structurally similar (isomorphic) objects. A rough rule of thumb is that two objects are equal if and only if their printed representations are the same.

    Two objects are equalp if they are equal; if they are characters and satisfy char-equal, which ignores alphabetic case and certain other attributes of characters; if they are numbers and have the same numerical value, even if they are of different types; or if they have components that are all equalp.


    (eq 'a 'b) is false. (eq 'a 'a) is true. (eq 3 3) might be true or false, depending on the implementation. (eq 3 3.0) is false. (eq 3.0 3.0) might be true or false, depending on the implementation. (eq #c(3 -4) #c(3 -4)) might be true or false, depending on the implementation. (eq #c(3 -4.0) #c(3 -4)) is false. (eq (cons 'a 'b) (cons 'a 'c)) is false. (eq (cons 'a 'b) (cons 'a 'b)) is false. (eq '(a . b) '(a . b)) might be true or false. (progn (setq x (cons 'a 'b)) (eq x x)) is true. (progn (setq x '(a . b)) (eq x x)) is true. (eq #\A #\A) might be true or false, depending on the implementation. (eq "Foo" "Foo") might be true or false. (eq "Foo" (copy-seq "Foo")) is false. (eq "FOO" "foo") is false. (eql 'a 'b) is false. (eql 'a 'a) is true. (eql 3 3) is true. (eql 3 3.0) is false. (eql 3.0 3.0) is true. (eql #c(3 -4) #c(3 -4)) is true. (eql #c(3 -4.0) #c(3 -4)) is false. (eql (cons 'a 'b) (cons 'a 'c)) is false. (eql (cons 'a 'b) (cons 'a 'b)) is false. (eql '(a . b) '(a . b)) might be true or false. (progn (setq x (cons 'a 'b)) (eql x x)) is true. (progn (setq x '(a . b)) (eql x x)) is true. (eql #\A #\A) is true. (eql "Foo" "Foo") might be true or false. (eql "Foo" (copy-seq "Foo")) is false. (eql "FOO" "foo") is false. (equal 'a 'b) is false. (equal 'a 'a) is true. (equal 3 3) is true. (equal 3 3.0) is false. (equal 3.0 3.0) is true. (equal #c(3 -4) #c(3 -4)) is true. (equal #c(3 -4.0) #c(3 -4)) is false. (equal (cons 'a 'b) (cons 'a 'c)) is false. (equal (cons 'a 'b) (cons 'a 'b)) is true. (equal '(a . b) '(a . b)) is true. (progn (setq x (cons 'a 'b)) (equal x x)) is true. (progn (setq x '(a . b)) (equal x x)) is true. (equal #\A #\A) is true. (equal "Foo" "Foo") is true. (equal "Foo" (copy-seq "Foo")) is true. (equal "FOO" "foo") is false. (equalp 'a 'b) is false. (equalp 'a 'a) is true. (equalp 3 3) is true. (equalp 3 3.0) is true. (equalp 3.0 3.0) is true. (equalp #c(3 -4) #c(3 -4)) is true. (equalp #c(3 -4.0) #c(3 -4)) is true. (equalp (cons 'a 'b) (cons 'a 'c)) is false. (equalp (cons 'a 'b) (cons 'a 'b)) is true. (equalp '(a . b) '(a . b)) is true. (progn (setq x (cons 'a 'b)) (equalp x x)) is true. (progn (setq x '(a . b)) (equalp x x)) is true. (equalp #\A #\A) is true. (equalp "Foo" "Foo") is true. (equalp "Foo" (copy-seq "Foo")) is true. (equalp "FOO" "foo") is true.

    Reference: http://stackoverflow.com/questions/547436/whats-the-difference-between-eq-eql-equal-and-equalp-in-common-lisp

    S.K.

    转载于:https://www.cnblogs.com/neoshen/archive/2013/05/06/3063293.html

    展开全文
  • AutoLISP对话框DCL关于LIST_BOX应用示例,DCL对话框代码如下。 dia7a:dialog {label = "列表框示例" ;:list_box {height = 10 ;key = "klist" ;label = "词库选单" ;width = 30 ;}:edit_box {key = "wordstr" ;label...
  • gimp-scriptfu-examples:开始为GIMP编写scriptfu lisp的一些示例脚本
  • Lisp源码200例

    2020-12-21 10:55:34
    【实例简介】Lisp源码200例,角度阵列程序,创建并插入匿名块,测量两线夹角,按给定比例建立尺寸标注样式程序,初始化绘图环境【实例截图】【核心代码】Lisp源码200例└── Lisp源码200例├── AAR.LSP├── ABL...
  • lisp 正则表达式示例

    2016-02-03 18:11:03
    lisp正则表达式可以用多个第三方的包,cliki推荐是cl-ppcre这个包.在代码中写正则表达式可以用cl-interpol这个包方便转义 cl-interpol 如果要匹配一对括号不用cl-interpol,需要写成 "\\(\\)" 借助cl-interpol只需下面...
  • Common Lisp 中的 Promise ... test[123].lisp包含一些要运行的示例源代码。 您可以像这样运行测试代码: (in-package :promises-test3) (run-function (make-instance 'runloop) 7 #'run " foo " )
  • CAD lisp 文字对齐程序.

    2011-11-01 14:50:47
    CAD lisp 文字对齐程序.CAD lisp 文字对齐程序.CAD lisp 文字对齐程序.
  • 利珀 Rust内置的基本Lisp解释器。 在尝试。 这是一个探索Rust和WebAssembly的项目,灵感来自所做的出色工作以及的原始帖子。 与一起玩耍时,总是有趣的“也有一些基本的好奇心。...当前仅运行一些示例lisp语句
  • Lisp

    2021-05-14 22:53:55
    输入与输出Common Lisp提供了大量的输入输出功能。我们已经使用的格式功能,打印输出功能。在本节中,我们将探讨一些在LISP提供了最常用的输入输出功能。输入函数下表提供了LISP的最常用的输入功能:SL No.函数说明1...
  • 利用AutoLISP管理图形数据库.ppt第5章 利用AutoLISP管理图形数据库,AutoCAD既是一个绘图软件包,又是一个图元数据管理系统,它在生成图形的同时也记录下了图元的数据和信息,利用AutoLISP提供的数据库操作函数,可对...
  • AutoLISP程序在AutoCAD中的应用实例
  • 我的使用libTH / libTHNN的Common Lisp深度学习库 新闻(2021-01-04) Metropolis-Hastings的实施似乎很合理。 旧新闻 20201221:HMC和NUTS实施已删除。 (效果不好) 20201213:通过简单的示例,MH和HMC可以很好...
  • cl-webapp-sample 用法 安装 作者 中村圭 ( ) 版权 版权所有 (c) 2015 中村圭 ( )
  • 中找到一些Klisp代码的工作示例。 例如,阶乘容易定义为整数范围的乘积。 (defn fact (n) (prod (range 1 (inc n) 1 ))) (fact 10 ) ; => 3628800 斐波那契数列是递归定义的。 (defn fib (n) ( if (< n 2 ) ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,514
精华内容 2,605
关键字:

lisp示例

友情链接: WAVELAB850.ZIP