RE: how to interrupt maphash
"James Anderson" <[email protected]> Fri, 28 Apr 2006 11:45:22 +0200
| Newsgroups | gmane.lisp.allegro |
|---|---|
| Message-ID | <[email protected]> |
hello; > -----Original Message----- > From: Yaling Zheng [mailto:[email protected]] > Sent: Friday, April 28, 2006 01.10 > To: [email protected] > Subject: how to interrupt maphash > > > > Does anybody know how to interrupt maphash? > Is there another construct I should use for that purpose? > > Thank you, > > Yaling > does your use case not allow this: CG-USER(19): (defparameter *t* (make-hash-table)) *T* CG-USER(20): (dotimes (x 100) (setf (gethash x *t*) t)) NIL CG-USER(21): (gethash 101 *t*) NIL NIL CG-USER(22): (gethash 1 *t*) T T CG-USER(26): (let ((r (random 100))) (block :done (maphash #'(lambda (k v) (print (list k v)) (when (eql k r) (return-from :done))) *t*)) r) (0 T) (10 T) (20 T) (30 T) (40 T) (50 T) (60 T) (70 T) (80 T) (90 T) (1 T) (11 T) (21 T) (31 T) (41 T) (51 T) 51 CG-USER(27): (let ((r (random 100))) (block :done (maphash #'(lambda (k v) (print (list k v)) (when (eql k r) (return-from :done))) *t*)) r) (0 T) (10 T) (20 T) (30 T) (40 T) (50 T) (60 T) (70 T) (80 T) (90 T) (1 T) (11 T) (21 T) (31 T) (41 T) (51 T) (61 T) (71 T) (81 T) (91 T) (2 T) (12 T) (22 T) (32 T) (42 T) (52 T) (62 T) (72 T) (82 T) (92 T) (3 T) (13 T) (23 T) (33 T) (43 T) (53 T) (63 T) (73 T) (83 T) (93 T) (4 T) (14 T) (24 T) (34 T) (44 T) (54 T) (64 T) (74 T) (84 T) (94 T) (5 T) (15 T) (25 T) (35 T) (45 T) (55 T) (65 T) (75 T) (85 T) (95 T) (6 T) (16 T) (26 T) (36 T) (46 T) (56 T) (66 T) (76 T) (86 T) (96 T) (7 T) 7 CG-USER(28):