You are looking at historical revision 32807 of this page. It may differ significantly from its current revision.

Outdated egg!

This is an egg for CHICKEN 3, the unsupported old release. You're almost certainly looking for the CHICKEN 4 version of this egg, if it exists.

If it does not exist, there may be equivalent functionality provided by another egg; have a look at the egg index. Otherwise, please consider porting this egg to the current version of CHICKEN.

Introduction

Combinators grab-bag.

Usage

(require-extension combinators)

Documentation

group/key

[procedure] (group/key KEYPROC LYST [EQUALITY equal?])

Groups a LYST of elements by some key attribute. Uses the single-argument KEYPROC to retrieve key values & the EQUALITY procedure to compare them.

Returns a list of grouped elements.

make-</key

[procedure] (make-</key KEYPROC [LESS-THAN <])

Returns a two-argument procedure that uses the single-argument KEYPROC to retrieve key values & the two-argument LESS-THAN procedure to compare them.

Examples

(group/key identity '(1 2 3 3 4 4 4)) ;=> ((1) (2) (3 3) (4 4 4))

(group/key car '((a 1) (a 2) (b 1)))  ;=> '(((a 1) (a 2)) ((b 1)))

(sort '(("a" . 1) ("z" . 3) ("b" . 2)) (make-</key first string-ci<?))
;=> (("a" . 1) ("b" . 2) ("z" . 3))

Notes

Bugs and Limitations

Author

License

Public Domain.

Requirements

Version history

1.0
Hello