Hi there Kon,As I was porting something that needed it, I did a quick port of the combinators egg to C5... I did it with cond-expand so the same codebase works for C4 and C5 rather than making a new fork.
Please find it attached - if you like it it's all yours, and I'll gladly add it to the C5 egg list if you wish :-)
Thanks for the eggs, Alaric
diff combinators/bi-combinators.scm combinators.c5/bi-combinators.scm 10,11c10 < scheme < chicken) --- > scheme) 12a12,16 > (cond-expand > (chicken-4 > (import chicken)) > (chicken-5 > (import (chicken base)))) diff combinators/generic-section-combinators.scm combinators.c5/generic-section-combinators.scm 16,20c16 < (import < (except scheme map) < chicken < (only data-structures identity) < (only srfi-1 circular-list map)) --- > (import (except scheme map)) 22c18,29 < (require-library data-structures srfi-1) --- > (cond-expand > (chicken-4 > (require-library data-structures srfi-1) > (import > > chicken > (only data-structures identity) > (only srfi-1 circular-list map))) > (chicken-5 > (import (chicken base)) > (import > (only srfi-1 circular-list map)))) diff combinators/logical-combinators.scm combinators.c5/logical-combinators.scm 10c10,17 < (import scheme chicken data-structures srfi-1) --- > (import scheme) > > (cond-expand > (chicken-4 > (import chicken data-structures srfi-1)) > (chicken-5 > (import (chicken base)) > (import srfi-1))) diff combinators/section-combinators.scm combinators.c5/section-combinators.scm 13,16c13,24 < scheme < chicken < (only srfi-1 drop drop-right circular-list) < (only data-structures identity)) --- > scheme) > > (cond-expand > (chicken-4 > (import chicken) > (import (only srfi-1 drop drop-right circular-list)) > (import (only data-structures identity)) > (require-library srfi-1)) > (chicken-5 > (import (chicken base)) > (import (only srfi-1 drop drop-right circular-list)) > (import (only (chicken base) identity)))) 18d25 < (require-library srfi-1) diff combinators/sort-combinators.scm combinators.c5/sort-combinators.scm 12,16c12 < (import < scheme < chicken < (only srfi-1 span) < (only bi-combinators bi-each)) --- > (import scheme) 18c14,23 < (require-library srfi-1 bi-combinators) --- > (cond-expand > (chicken-4 > (import chicken) > (import (only srfi-1 span)) > (import (only bi-combinators bi-each)) > (require-library srfi-1 bi-combinators)) > (chicken-5 > (import (chicken base)) > (import (only srfi-1 span)) > (import (only bi-combinators bi-each)))) diff combinators/stack-combinators.scm combinators.c5/stack-combinators.scm 18c18 < (import scheme chicken) --- > (import scheme) 19a20,24 > (cond-expand > (chicken-4 > (import chicken)) > (chicken-5 > (import (chicken base)))) diff combinators/tri-combinators.scm combinators.c5/tri-combinators.scm 10,12c10,16 < scheme < chicken) < --- > scheme) > > (cond-expand > (chicken-4 > (import chicken)) > (chicken-5 > (import (chicken base)))) diff combinators/uni-combinators.scm combinators.c5/uni-combinators.scm 9,11c9,15 < (import < scheme < chicken) --- > (import scheme) > > (cond-expand > (chicken-4 > (import chicken)) > (chicken-5 > (import (chicken base))))
;;;; combinators.meta -*- Hen -*- ((category data) (author "[[kon lovett]]") (license "Public Domain") (synopsis "Combinators") (test-dependencies test) (version "1.2.1") (components (extension uni-combinators (csc-options -optimize-level 3)) (extension bi-combinators (csc-options -optimize-level 3)) (extension tri-combinators (csc-options -optimize-level 3)) (extension section-combinators (csc-options -optimize-level 3)) #;(extension generic-section-combinators (csc-options -optimize-level 3)) (extension logical-combinators (csc-options -optimize-level 3)) (extension sort-combinators (csc-options -optimize-level 3) (component-dependencies bi-combinators)) (extension stack-combinators (csc-options -optimize-level 3))))