bowbow99 / xyzzy.ansify

Common Lisp の xyzzy にないもの詰め合わせ予定地
MIT License
6 stars 0 forks source link

`typep` 等で typespec でないものをエラーに #8

Closed bowbow99 closed 13 years ago

bowbow99 commented 13 years ago

CLHS では undefined なので、エラー投げてもいいし投げなくてもいい。

Exceptional Situations:

...(snip)... The consequences are undefined if the type-specifier is not a type specifier. CLHS: Function TYPEP

xyzzy デフォルトの lisp:typep は黙って nil を返す。

(typep 3 'fred)
=> nil

ansify::typep は今のところ(rel-0.01.01)デフォルトで warning 吐いてて、ansify::*warn-on-undefined-typespec* で設定可能。

(ansify::typep 3 'fred)
; Warning: type specifier じゃないみたい: fred
=> nil

SBCL, Clozure CL, CLISP はエラーになる。

;; Clozure CL の場合
CL-USER> (typep 3 'fred)
; Evaluation aborted on #<SIMPLE-ERROR #x187B1716>.
bowbow99 commented 13 years ago

xyzzy には lisp:bad-type-specifier なるエラーがあったらしい。

(subtypep 'lisp:bad-type-specifier 'error)
=> t
=> t

(make-condition 'bad-type-specifier :datum 'foo)
=> #S(bad-type-specifier datum foo)

(princ *)
型指定子が不正です: foo
=> #S(bad-type-specifier datum foo)
bowbow99 commented 13 years ago

SHA: 2daa08b208a8c5a1198b6727dd4c8a4e7d951380 時点で

にしてある。設定で変更可能にしてあるけど、そもそも変更可能でいいのか?って話が。 一旦閉じて declaration 実装したらまた考え直す。