[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] 55/87: GOOPS cleanup to use SRFI-1 better
From: |
Andy Wingo |
Subject: |
[Guile-commits] 55/87: GOOPS cleanup to use SRFI-1 better |
Date: |
Thu, 22 Jan 2015 17:30:03 +0000 |
wingo pushed a commit to branch wip-goops-refactor
in repository guile.
commit 45102983711d022aa43d61f585e77a2d3fd73ac7
Author: Andy Wingo <address@hidden>
Date: Mon Jan 12 21:16:25 2015 +0100
GOOPS cleanup to use SRFI-1 better
* module/oop/goops.scm (class-subclasses, class-methods): Reimplement
using stock SRFI-1 procedures.
---
module/oop/goops.scm | 46 +++++++++++-----------------------------------
1 files changed, 11 insertions(+), 35 deletions(-)
diff --git a/module/oop/goops.scm b/module/oop/goops.scm
index 74ca213..9cec443 100644
--- a/module/oop/goops.scm
+++ b/module/oop/goops.scm
@@ -237,6 +237,17 @@
"Return the slot list of the class @var{obj}."
class-index-slots)
+(define (class-subclasses c)
+ (define (all-subclasses c)
+ (cons c (append-map all-subclasses
+ (class-direct-subclasses c))))
+ (delete-duplicates (cdr (all-subclasses c)) eq?))
+
+(define (class-methods c)
+ (delete-duplicates (append-map class-direct-methods
+ (cons c (class-subclasses c)))
+ eq?))
+
;;
;; is-a?
;;
@@ -2657,41 +2668,6 @@ var{initargs}."
))
;;;
-;;; {<composite-metaclass> and <active-metaclass>}
-;;;
-
-;(autoload "active-slot" <active-metaclass>)
-;(autoload "composite-slot" <composite-metaclass>)
-;(export <composite-metaclass> <active-metaclass>)
-
-;;;
-;;; {Tools}
-;;;
-
-;; list2set
-;;
-;; duplicate the standard list->set function but using eq instead of
-;; eqv which really sucks a lot, uselessly here
-;;
-(define (list2set l)
- (let loop ((l l)
- (res '()))
- (cond
- ((null? l) res)
- ((memq (car l) res) (loop (cdr l) res))
- (else (loop (cdr l) (cons (car l) res))))))
-
-(define (class-subclasses c)
- (letrec ((allsubs (lambda (c)
- (cons c (mapappend allsubs
- (class-direct-subclasses c))))))
- (list2set (cdr (allsubs c)))))
-
-(define (class-methods c)
- (list2set (mapappend class-direct-methods
- (cons c (class-subclasses c)))))
-
-;;;
;;; {Final initialization}
;;;
- [Guile-commits] 42/87: No more concept of "pure generics", (continued)
- [Guile-commits] 42/87: No more concept of "pure generics", Andy Wingo, 2015/01/22
- [Guile-commits] 44/87: Minor goops.c tidying, Andy Wingo, 2015/01/22
- [Guile-commits] 43/87: Remove scm_c_extend_primitive_generic, Andy Wingo, 2015/01/22
- [Guile-commits] 41/87: Remove TEST_CHANGE_CLASS, Andy Wingo, 2015/01/22
- [Guile-commits] 40/87: Remove pure-generic?, Andy Wingo, 2015/01/22
- [Guile-commits] 46/87: Deprecate scm_get_keyword, Andy Wingo, 2015/01/22
- [Guile-commits] 16/87: Fold GOOPS compile and dispatch modules into main GOOPS module, Andy Wingo, 2015/01/22
- [Guile-commits] 52/87: Remove special cases for <keyword>, Andy Wingo, 2015/01/22
- [Guile-commits] 53/87: Incorporate %inherit-magic! into %init-layout!, Andy Wingo, 2015/01/22
- [Guile-commits] 56/87: append-map rather than mapappend, Andy Wingo, 2015/01/22
- [Guile-commits] 55/87: GOOPS cleanup to use SRFI-1 better,
Andy Wingo <=
- [Guile-commits] 48/87: Re-use the vtable "size" field for GOOPS nfields, Andy Wingo, 2015/01/22
- [Guile-commits] 54/87: Cosmetic goops refactors., Andy Wingo, 2015/01/22
- [Guile-commits] 47/87: Move <class> initialization to Scheme, Andy Wingo, 2015/01/22
- [Guile-commits] 50/87: Reimplement inherit-applicable! in Scheme, Andy Wingo, 2015/01/22
- [Guile-commits] 45/87: Rewrite %initialize-object in Scheme, Andy Wingo, 2015/01/22
- [Guile-commits] 49/87: Reimplement %allocate-instance in Scheme, Andy Wingo, 2015/01/22
- [Guile-commits] 51/87: goops.c no longer knows about <class> slot allocation, Andy Wingo, 2015/01/22
- [Guile-commits] 57/87: GOOPS utils module cleanups, Andy Wingo, 2015/01/22
- [Guile-commits] 58/87: Fold (oop goops util) into (oop goops), Andy Wingo, 2015/01/22
- [Guile-commits] 61/87: scm_make cleanup, Andy Wingo, 2015/01/22