标签: gnu-common-lisp

实现forkpty()的GNU Common Lisp包

我寻求实现的GNU Common Lisp包forkpty(); openpty()也将是一个很大的优势,login_tty()并将成为我可以忍受的奢侈品.(Duckduckgo,谷歌等没有任何帮助.)有这样的吗?哪里?

lisp common-lisp gnu-common-lisp

6
推荐指数
1
解决办法
298
查看次数

确定超类型路径

给定内容为1的变量,我知道它是至少五种类型的成员:

 1 (let* ((fred 1))
 2   (princ (typep fred 'bit)) (terpri)
 3   (princ (typep fred 'integer)) (terpri)
 4   (princ (typep fred 'fixnum)) (terpri)
 5   (princ (typep fred 'rational)) (terpri)
 6   (princ (typep fred t)) (terpri))
T
T
T
T
T
Run Code Online (Sandbox Code Playgroud)

这里有两个问题.

  1. 给定具有任意内容的变量,如何确定其超类型路径?

  2. 我在哪里可以在文档中找到答案?

lisp clisp common-lisp gnu-common-lisp

5
推荐指数
1
解决办法
127
查看次数

如何在常见的lisp中格式化单个反斜杠?

我目前正在尝试获得... \hlineGNU Common lisp 2.49 的输出,但我无法使格式工作.这是我到目前为止尝试获得一个反斜杠:

(format nil "\ ") => " "
(format nil "\\ ") => "\\ "
(format nil "\\\ ") => "\\ "
Run Code Online (Sandbox Code Playgroud)

我认为双反斜杠会使它工作,为什么反斜杠不会逃避另一个反斜杠?

lisp common-lisp gnu-common-lisp

5
推荐指数
2
解决办法
384
查看次数

Lisp:我如何在mac中安装gcl

我有Mac OSX 10.8.4.我已经克隆了gcl的git repo,根据自述文件,我运行了./configure.

但是,我收到以下错误:

configure: error: Cannot build with randomized sbrk. Your options:
 - upgrade to a kernel/libc that knows about personality(ADDR_NO_RANDOMIZE)"
 - recompile your kernel with CONFIG_COMPAT_BRK (if it has that option)"
 - run sysctl kernel.randomize_va_space=0 before using gcl
Run Code Online (Sandbox Code Playgroud)

尝试了第三种选择(对于其他人我是无能为力的,即使在谷歌搜索后也没有得到任何解决方案).任何人都可以告诉我应该如何安装gcl或者去获取开发环境lisp?

lisp common-lisp gnu-common-lisp

5
推荐指数
1
解决办法
883
查看次数

包GCL和CLISP有什么区别?

在Ubuntu存储库中有两个Lisp实现:GCL和CLISP.它们之间有根本区别吗?哪一个更接近行业标准?

ubuntu clisp common-lisp gnu-common-lisp

4
推荐指数
2
解决办法
1161
查看次数

GNU Common Lisp的详细信息(类型)

如果在REPL我输入:

(type-of (make-array 5))
Run Code Online (Sandbox Code Playgroud)

然后我得到了答复:

(SIMPLE-VECTOR 5)
Run Code Online (Sandbox Code Playgroud)

很公平.所以如果在REPL我进入:

(type-of (make-array (list 5 3 2)))
Run Code Online (Sandbox Code Playgroud)

然后我得到了答复:

(SIMPLE-ARRAY T (5 3 2))
Run Code Online (Sandbox Code Playgroud)

我有两个问题.

  1. T告诉我什么?如果NIL相反,那会告诉我什么?
  2. 我在哪里可以自己找到这个答案?我没能在(例如)Lisp HyperSpec中找到答案.

lisp clisp common-lisp gnu-common-lisp

4
推荐指数
1
解决办法
211
查看次数

从命令行启动Lisp程序时如何指定包名?

我从shell脚本调用了一个Lisp函数(以及其他一些东西).为简洁起见,以下是脚本的相关部分:

./gcl -load /tmp/calendrica-3.0.cl-batch -eval'(格式T"~a"(CC3 :: sunset(CC3 :: fixed-from-gregorian)(CC3 :: gregorian-date 1996 CC3 :: 2月25日))CC3 ::耶路撒冷))'728714.7349874675

上面的代码工作正常,但我必须为每个使用的符号附加包名CC3; 这使得代码难以操作且难以输入.

我尝试简化它,使用use-package:

./gcl -load /tmp/calendrica-3.0.cl-batch -eval'(格式T"~a"(使用包"CC3")(日落(固定自格里高利(gregorian-date 1996年2月25日))耶路撒冷))'

更容易阅读和打字,但遗憾的是它不起作用.我已经尝试了各种方法来包含该use-package指令,但到目前为止还没有成功.

是否可以在use-package通过GNU Common Lisp(gcl)加载指令启动Lisp程序时包含指令?

更新: 解决方案是根据接受的答案建议使用多个evals.

./gcl -load /tmp/calendrica-3.0.cl-batch -eval'(use-package"CC3")' - eval'(格式T"~a"(日落(固定自格里高利)(gregorian-date 1996 2月25日))耶路撒冷))'

shell batch-file common-lisp gnu-common-lisp

3
推荐指数
1
解决办法
109
查看次数

CONS对象可以用作哈希表的键吗?

我最近一直在玩LISP,我想通过缓存它的输出来尝试优化一个非常低效的递归函数,所以它只运行一次参数的每个组合.我想将结果保存到哈希表中,使用(LIST a b)(CONS a b)作为键.我的问题是,这甚至可能吗?我读过的文档会让我相信它,因为我读到的文档定义key为"对象",并将"对象"定义为构造的东西cons.所以我试了一下.

(defparameter *table* (make-hash-table))
(setf (gethash (list 1 2) *table*) 123)
(format t "~S~%" (gethash (list 1 2) *table*))
Run Code Online (Sandbox Code Playgroud)

它给了我NIL,当我期待123.如果我更换(list 1 2)cons它仍然无法正常工作,但是当我使用一个普通的整数,它工作正常.

我正在使用GCL 2.6.12

lisp common-lisp gnu-common-lisp

3
推荐指数
1
解决办法
133
查看次数

协鑫如何处理条件?

handler-case 是在 Common Lisp 中处理条件的关键,但 Ubuntu 18.04 上的 GCL 2.6.12 认为它是一个未定义的函数:

>(handler-case (error "test") (error (condition) condition))                   
                                                                               
Error: UNDEFINED-FUNCTION :NAME HANDLER-CASE                                   
Fast links are on: do (si::use-fast-links nil) for debugging                   
Signalled by EVAL.                                                             
UNDEFINED-FUNCTION :NAME HANDLER-CASE                                          

Broken at EVAL.  Type :H for Help.                                             
    1  Return to top level.                                                    
>>
Run Code Online (Sandbox Code Playgroud)

对于 也是如此handler-bind

GCL 手册中唯一与处理条件或错误相关的函数是 GCL 特定的universal-error-handler.

如何在 GCL 中处理条件,最好以其他 Lisps 支持的方式处理?

lisp common-lisp gnu-common-lisp condition-system ansi-common-lisp

3
推荐指数
1
解决办法
44
查看次数

在循环的输出中创建一个列表

我们的任务是以这种方式打印出Pascal三角形中的值

(pascal 2)
(1 2 1)
(pascal 0)
(1)
Run Code Online (Sandbox Code Playgroud)

我将定义为二项式的代码复制到了互联网上的某处,定义如下:

(defun choose(n k)
        (labels ((prod-enum (s e)
            (do ((i s (1+ i)) (r 1 (* i r))) ((> i e) r)))
          (fact (n) (prod-enum 1 n)))
         (/ (prod-enum (- (1+ n) k) n) (fact k))))
Run Code Online (Sandbox Code Playgroud)

现在,我试图根据我的pascal函数中的值创建一个列表:

(defun pascal (start end) 
  (do ((i start (+ i 1)))
       ((> i end) )
       (print (choose end i) ))
)
Run Code Online (Sandbox Code Playgroud)

如果使用(pascal 0 2)进行测试,该函数将产生1 2 1 NIL。如何消除NIL并创建列表?

common-lisp gnu-common-lisp

2
推荐指数
1
解决办法
216
查看次数

如何使用gcl在Common Lisp中进行跟踪?

有没有办法打印出函数的所有调用来调试递归程序?

lisp debugging common-lisp gnu-common-lisp

2
推荐指数
1
解决办法
678
查看次数

Lisp:在宏中扩展属性名称

考虑这个属性列表:

(defvar *some-variable* (list :foo "fooval" :bar "barval"))
Run Code Online (Sandbox Code Playgroud)

这个简单的电话:

(getf *some-variable* :foo)
Run Code Online (Sandbox Code Playgroud)

收益率"fooval"如预期.我定义了一个宏应该做同样的事情,除了我可以传递任何属性的名称来检索:

(defmacro my-macro (property-name)
    `(getf *some-variable* :,property-name))
Run Code Online (Sandbox Code Playgroud)

不幸的是,这样称呼它:

(my-macro 'foo)
Run Code Online (Sandbox Code Playgroud)

结果FOO.为什么?

lisp macros clisp common-lisp gnu-common-lisp

1
推荐指数
1
解决办法
57
查看次数