Common Lisp의 컴파일 타임 유형 검사: 작은 실험

2469 단어 typecommonlisp
static1.lisp에서:

(defpackage static1 
 (:use #:cl)) 
(in-package :static1) 

(declaim (ftype (function (string string) string) concat-strings)) 
(defun concat-strings (a b)
  (format nil "~A --- ~A" a b)) 

(declaim (ftype (function (fixnum fixnum) string) concat-nums)) 
(defun concat-nums (a b)
  (concat-strings a b))


그런 다음 다음 명령을 실행했습니다.

sbcl --noinform --eval '(compile-file "static1.lisp")' --quit


SBCL은 다음과 같은 경고를 표시했습니다.

; caught WARNING: 
;  Derived type of STATIC1::A is 
;    (VALUES FIXNUM &OPTIONAL), 
;  conflicting with its asserted type 
;    STRING. 
;  See also: 
;    The SBCL Manual, Node "Handling of Types"


따라서 Common Lisp 구현인 SBCL은 컴파일 타임에 유형을 확인할 수 있습니다. 어쨌든 프로그래머는 경고를 읽어야 합니다.

좋은 웹페이지 즐겨찾기