首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在GCL中处理条件?

如何在GCL中处理条件?
EN

Stack Overflow用户
提问于 2021-07-01 08:01:24
回答 1查看 104关注 0票数 4

在通用Lisp中,handler-case是处理条件的关键,但是Ubuntu18.04上的GCL2.6.12认为它是一个未定义的函数:

代码语言:javascript
复制
>(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.                                                    
>>

handler-bind也是如此。

在GCL手册中,与处理条件或错误相关的唯一功能是特定于GCL的universal-error-handler

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-01 08:01:24

这种情况在项目的README.Debian中作了解释

..。GCL第一次发布时有效的通用Lisp标准被称为"Common,语言“(CLtL1),它是由同名的Steele编写的一本提供此规范的书。随后,美国国家标准协会(ANSI)采用了一种扩展性很强的标准,至今仍被认为是最终的通用lisp语言规范。

..。

若要切换ANSI映像的使用,请将环境变量GCL_ANSI设置为任何非空字符串。

(这个Debian错误有一些更多的信息。)

handler-case需要ANSI支持,因此在基于Debian的系统中,GCL需要使用GCL_ANSI环境变量集启动;例如:

代码语言:javascript
复制
$ GCL_ANSI=1 gcl

要反映更改,启动消息的第一行更改如下:

代码语言:javascript
复制
GCL (GNU Common Lisp)  2.6.12 CLtL1    Fri Apr 22 15:51:11 UTC 2016

至:

代码语言:javascript
复制
GCL (GNU Common Lisp)  2.6.12 ANSI    Fri Apr 22 15:51:11 UTC 2016
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68206447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档