如何在Lisp程序中导入“ compile-regexp”?

问题描述

我是LISP的新手,想运行一个包含如下功能的程序:

(defun number-string-p (s)
  (match-regexp
   #.(compile-regexp "^\\([+-]\\|\\)\\([0-9][0-9.,]*\\|[0-9.,]*[0-9]\\)$") s))

运行时得到COMPILE-REGEXP is undefined。看来match-regexpcompile-regexp不是LISP中的内置函数在这方面我该怎么办?是否有要导入的包裹? 我进行了很多搜索,但无法解决问题。

解决方法

{compile-regexp是Allegro CL很久以前提供的功能,实际上仍然提供,但只是向后兼容:请参见here

如果您想使此代码在Allegro以外的Lisp中运行,则您可能需要编写类似CL-PPCRE之类的兼容垫片,该垫片可通过Quicklisp用于任何最近的Common Lisp实现,或者需要更改代码以直接使用CL-PPCRE。