问题描述
我是LISP的新手,想运行一个包含如下功能的程序:
(defun number-string-p (s)
(match-regexp
#.(compile-regexp "^\\([+-]\\|\\)\\([0-9][0-9.,]*\\|[0-9.,]*[0-9]\\)$") s))
运行时得到COMPILE-REGEXP is undefined
。看来match-regexp
和compile-regexp
不是LISP中的内置函数。在这方面我该怎么办?是否有要导入的包裹?
我进行了很多搜索,但无法解决问题。
解决方法
{compile-regexp
是Allegro CL很久以前提供的功能,实际上仍然提供,但只是向后兼容:请参见here。
如果您想使此代码在Allegro以外的Lisp中运行,则您可能需要编写类似CL-PPCRE之类的兼容垫片,该垫片可通过Quicklisp用于任何最近的Common Lisp实现,或者需要更改代码以直接使用CL-PPCRE。