首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SBCL注意:类型断言太复杂,无法检查

SBCL注意:类型断言太复杂,无法检查
EN

Stack Overflow用户
提问于 2021-03-03 01:41:53
回答 1查看 68关注 0票数 1

在破译SBCL编译器消息时遇到困难:

代码语言:javascript
复制
; in: DEFUN PURIFY-FILE
;     (DEFUN DEPENDENCIES::PURIFY-FILE (DEPENDENCIES::FILE)
;       "Transforms problematic symbols to benign NIL in file, before reading.
;      Returns a string of altered file content."
;       (LET ((DEPENDENCIES::FILE-STRING
;              (ALEXANDRIA:READ-FILE-INTO-STRING DEPENDENCIES::FILE))
;             (DEPENDENCIES::MODIFIED-FILE-STRING ""))
;         (SETF DEPENDENCIES::MODIFIED-FILE-STRING
;                 (CL-PPCRE:REGEX-REPLACE-ALL "[ trn]'[A-Za-z0-9!@$%&*_+:=<.>/?-]+"
;                                             DEPENDENCIES::FILE-STRING " NIL"))
;         (CL-PPCRE:REGEX-REPLACE-ALL
;          "[(][qQ][uU][oO][tT][eE][ trn]+[A-Za-z0-9!@$%&*_+:=<.>/?-]+[)]"
;          DEPENDENCIES::MODIFIED-FILE-STRING "NIL")))
; --> PROGN SB-IMPL::%DEFUN SB-IMPL::%DEFUN SB-INT:NAMED-LAMBDA
; ==>
;   #'(SB-INT:NAMED-LAMBDA DEPENDENCIES::PURIFY-FILE
;         (DEPENDENCIES::FILE)
;       (DECLARE (SB-C::TOP-LEVEL-FORM))
;       "Transforms problematic symbols to benign NIL in file, before reading.
;    Returns a string of altered file content."
;       (BLOCK DEPENDENCIES::PURIFY-FILE
;         (LET ((DEPENDENCIES::FILE-STRING #)
;               (DEPENDENCIES::MODIFIED-FILE-STRING ""))
;           (SETF DEPENDENCIES::MODIFIED-FILE-STRING #)
;           (CL-PPCRE:REGEX-REPLACE-ALL
;            "[(][qQ][uU][oO][tT][eE][ trn]+[A-Za-z0-9!@$%&*_+:=<.>/?-]+[)]"
;            DEPENDENCIES::MODIFIED-FILE-STRING "NIL"))))
;
; note: type assertion too complex to check:
; (VALUES STRING &OPTIONAL BOOLEAN &REST T).

我对此函数的规范是(declaim (ftype (function (pathname) (values string (member NIL T))) purify-file))

是不是因为CL-PPCRE:REGEX-REPLACE-ALL返回了多个值?如果是这样,如何使用ftype指定所有多个值的类型--在本例中是字符串& NIL或T?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2021-03-03 05:31:06

事实上,正如消息所表明的那样,类型for (values string (member NIL T))对于SBCL来说太复杂了。将类型the更改为(values t t) works。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66444432

复制
相关文章

相似问题

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