Re: [Chicken-users] Which API to use (llrb)?
Am 29.10.2015 um 20:57 schrieb John Cowan: > "Jörg F. Wittenberger" scripsit: > >> However when it comes to `fold` I'm not sure if it is better to follow >> the srfi-1 argument order (combiner-initial-set) or the srfi-69 style >> order (set-combiner-initial). > > SRFI-1 rules, SRFI-69 (in this respect) drools. The in-progress SRFI > 125 uses SRFI 1 order. I haven't been aware of SRFI-125 nor srfi-114 so far. Taking hints I'll simply allow both orderings for the -table interfaces and go with the srfi-1 ordering for immutable trees. Furthermore the llrb-treetype had already grown in the meantime to include a key? argument. Adding one more for the here unused hash function make it equivalent to srfi-114's comparators. Thus I better use the latter. John, does a chicken implementation already exist? Thanks /Jörg ___ Chicken-users mailing list Chicken-users@nongnu.org https://lists.nongnu.org/mailman/listinfo/chicken-users
Re: [Chicken-users] Which API to use (llrb)?
"Jörg F. Wittenberger" scripsit: > John, does a chicken implementation already exist? SRFI 125 is only implemented for Larceny, but the code's pretty portable. I'm in the process of replacing SRFI 114 with the simpler SRFI 128, so hold off on that for a bit. -- John Cowan http://www.ccil.org/~cowanco...@ccil.org Evolutionary psychology is the theory that men are nothing but horn-dogs, and that women only want them for their money. --Susan McCarthy (adapted) ___ Chicken-users mailing list Chicken-users@nongnu.org https://lists.nongnu.org/mailman/listinfo/chicken-users
Re: [Chicken-users] Which API to use (llrb)?
Am 29.10.2015 um 20:49 schrieb Dan Leslie: > Whatever works with the doto macro? Looks like `doto` expects it's first `var` argument to be mutable and returns the same reference. This would argue in favor of the srfi-69 ordering. (Which is available via the -table API atop.) However those "binding-set"s are immutable. To work with the `doto` macro the latter would have to return the result of the application of `proc` instead of `var`. > Sent from my BlackBerry 10 smartphone. > Original Message > From: Jörg F. Wittenberger > Sent: Thursday, October 29, 2015 12:47 PM > To: chicken-users > Subject: [Chicken-users] Which API to use (llrb)? > > Hi all, > > I did some more refinements to the LLRB-code I recently posted here. > > However I got stuck on the inability to decide which API to use. > > The idea is to have a type "binding-set" (is there a better name?) as an > alternative t alists. > > However when it comes to `fold` I'm not sure if it is better to follow > the srfi-1 argument order (combiner-initial-set) or the srfi-69 style > order (set-combiner-initial). > > At one hand trying to be a "drop-in" for lists it would better not > change the argument order wrt. srfi-1. > > However the fold procedure from srfi-1 takes two arguments, the element > (for alists the key-value-pair) and the accumulated value. The fold > operation for "binding-set" is to be called with three arguments, key, > value and result-so-far. Just like srfi-69's hash-table-fold. > > Therefore being 100% drop-in is not possible anyway. Therefore it might > be better to follow to srfi-69 order. > > So which line of reasoning to follow? Which one of the following is > APIs "better"? Any reasoning I'm not aware of? > > Best > > /Jörg > > > A: srfi-69 > > (binding-set-fold set proc nil) > > {{Proc}} must be a procedure of three arguments. It is invoked for > each element with the key, value and the accumulated value (nil for > the first element). > > B: srfi-1 > > (binding-set-fold proc nil set) > > {{Proc}} must be a procedure of three arguments. It is invoked for > each element with the key, value and the accumulated value (nil for > the first element). > > ___ > Chicken-users mailing list > Chicken-users@nongnu.org > https://lists.nongnu.org/mailman/listinfo/chicken-users > ___ Chicken-users mailing list Chicken-users@nongnu.org https://lists.nongnu.org/mailman/listinfo/chicken-users
Re: [Chicken-users] Which API to use (llrb)?
Whatever works with the doto macro? Sent from my BlackBerry 10 smartphone. Original Message From: Jörg F. Wittenberger Sent: Thursday, October 29, 2015 12:47 PM To: chicken-users Subject: [Chicken-users] Which API to use (llrb)? Hi all, I did some more refinements to the LLRB-code I recently posted here. However I got stuck on the inability to decide which API to use. The idea is to have a type "binding-set" (is there a better name?) as an alternative t alists. However when it comes to `fold` I'm not sure if it is better to follow the srfi-1 argument order (combiner-initial-set) or the srfi-69 style order (set-combiner-initial). At one hand trying to be a "drop-in" for lists it would better not change the argument order wrt. srfi-1. However the fold procedure from srfi-1 takes two arguments, the element (for alists the key-value-pair) and the accumulated value. The fold operation for "binding-set" is to be called with three arguments, key, value and result-so-far. Just like srfi-69's hash-table-fold. Therefore being 100% drop-in is not possible anyway. Therefore it might be better to follow to srfi-69 order. So which line of reasoning to follow? Which one of the following is APIs "better"? Any reasoning I'm not aware of? Best /Jörg A: srfi-69 (binding-set-fold set proc nil) {{Proc}} must be a procedure of three arguments. It is invoked for each element with the key, value and the accumulated value (nil for the first element). B: srfi-1 (binding-set-fold proc nil set) {{Proc}} must be a procedure of three arguments. It is invoked for each element with the key, value and the accumulated value (nil for the first element). ___ Chicken-users mailing list Chicken-users@nongnu.org https://lists.nongnu.org/mailman/listinfo/chicken-users ___ Chicken-users mailing list Chicken-users@nongnu.org https://lists.nongnu.org/mailman/listinfo/chicken-users
[Chicken-users] Which API to use (llrb)?
Hi all, I did some more refinements to the LLRB-code I recently posted here. However I got stuck on the inability to decide which API to use. The idea is to have a type "binding-set" (is there a better name?) as an alternative t alists. However when it comes to `fold` I'm not sure if it is better to follow the srfi-1 argument order (combiner-initial-set) or the srfi-69 style order (set-combiner-initial). At one hand trying to be a "drop-in" for lists it would better not change the argument order wrt. srfi-1. However the fold procedure from srfi-1 takes two arguments, the element (for alists the key-value-pair) and the accumulated value. The fold operation for "binding-set" is to be called with three arguments, key, value and result-so-far. Just like srfi-69's hash-table-fold. Therefore being 100% drop-in is not possible anyway. Therefore it might be better to follow to srfi-69 order. So which line of reasoning to follow? Which one of the following is APIs "better"? Any reasoning I'm not aware of? Best /Jörg A: srfi-69 (binding-set-fold set proc nil) {{Proc}} must be a procedure of three arguments. It is invoked for each element with the key, value and the accumulated value (nil for the first element). B: srfi-1 (binding-set-fold proc nil set) {{Proc}} must be a procedure of three arguments. It is invoked for each element with the key, value and the accumulated value (nil for the first element). ___ Chicken-users mailing list Chicken-users@nongnu.org https://lists.nongnu.org/mailman/listinfo/chicken-users