在公共Lisp中删除类型

在公共Lisp中删除类型,lisp,common-lisp,Lisp,Common Lisp,Common Lisp是否提供了一种工具来取消定义使用创建的类型 我在Hyperspec中没有找到任何与之相关的内容。我只想untrn派生类型说明符: T1> (deftype foo () 'fixnum) FOO T1> (let ((bar 1)) (check-type bar foo)) NIL T1> (unintern 'foo) T T1> (let ((bar 1)) (check-type bar foo)) Unknown

Common Lisp是否提供了一种工具来取消定义使用创建的类型


我在Hyperspec中没有找到任何与之相关的内容。

我只想
untrn
派生类型说明符:

T1> (deftype foo () 'fixnum)
FOO
T1> (let ((bar 1))
      (check-type bar foo))
NIL
T1> (unintern 'foo)
T
T1> (let ((bar 1))
      (check-type bar foo))

Unknown type specifier: FOO
   [Condition of type SIMPLE-ERROR]

此外,如果出于某种原因确实担心删除该类型的每个跟踪,则始终可以编写依赖于实现的代码来实现它,即使该标准中没有提到此类功能。例如,在CCL中(未经测试,我只是浏览了相关代码):

现在我们开始:

T1> (deftype foo () "frob" 'fixnum)
FOO
T1> (documentation 'foo 'type)
"frob"
T1> (let ((bar 1))
      (check-type bar foo))
NIL
T1> (delete-type 'foo)
NIL
T1> (documentation 'foo 'type)
NIL
T1> (let ((bar 1))
      (check-type bar foo))

Unknown type specifier: FOO
   [Condition of type SIMPLE-ERROR]
T1> (deftype foo () "frob" 'fixnum)
FOO
T1> (documentation 'foo 'type)
"frob"
T1> (let ((bar 1))
      (check-type bar foo))
NIL
T1> (delete-type 'foo)
NIL
T1> (documentation 'foo 'type)
NIL
T1> (let ((bar 1))
      (check-type bar foo))

Unknown type specifier: FOO
   [Condition of type SIMPLE-ERROR]