[movitz-cvs] CVS movitz/losp/muerte
ffjeld
ffjeld at common-lisp.net
Fri Apr 7 21:48:43 UTC 2006
Update of /project/movitz/cvsroot/movitz/losp/muerte
In directory clnet:/tmp/cvs-serv24108
Added Files:
subtypep.lisp
Log Message:
Added very primitive subtypep.
--- /project/movitz/cvsroot/movitz/losp/muerte/subtypep.lisp 2006/04/07 21:48:43 NONE
+++ /project/movitz/cvsroot/movitz/losp/muerte/subtypep.lisp 2006/04/07 21:48:43 1.1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Copyright (C) 2006,
;; Department of Computer Science, University of Tromso, Norway.
;;
;; For distribution policy, see the accompanying file COPYING.
;;
;; Filename: subtypep.lisp
;; Description:
;; Author: Frode Vatvedt Fjeld <frodef at acm.org>
;; Created at: Sun Apr 2 20:47:11 2006
;;
;; $Id: subtypep.lisp,v 1.1 2006/04/07 21:48:43 ffjeld Exp $
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(require :muerte/basic-macros)
(provide :muerte/subtypep)
(in-package muerte)
(defun subtypep (type-1 type-2 &optional environment)
"Is type-1 a subtype of type-2? => subtype-p, valid-p"
(let ((class-1 (find-class type-1 nil environment))
(class-2 (find-class type-2 nil environment)))
(cond
((and class-1 class-2)
(values (subclassp class-1 class-2) t))
(class-2
(dolist (c (class-precedence-list class-2) (values nil nil))
(when (member type-1 (getf (class-plist c) :subtypes))
(return (values t t)))))
(t (values nil nil)))))
More information about the Movitz-cvs
mailing list