One problem with generalising find-max and find-min into a single hof is that they are closer in spirit to a fold than a find. The name find- makes you think that the passed in function should be a predicate on one element, not two. How about something like first-by?
> (first-by string<? (compose1 symbol->string second) '((3 pears) (1 banana) (2 apples))) '(2 apples) martin On Sun, Oct 11, 2015 at 3:24 PM, Alex Knauth <[email protected]> wrote: > Hi, > > Alexis King and I were discussing adding versions of argmin and argmax to > the alexis/collection library, but we agreed that find-min and find-max > were clearer names. Then we came up with a generalization of those that > would take an ordering procedure (< for find-min and > for find-max), and > find the element that had a property greater/less than the properties of > all the other elements, by the ordering procedure (not restricted to > numbers). > > The problem was naming it. We thought of `find-best` and > `find-most-relevant`, but `find-best` would be confusing when it's being > used to find the worst case, and `find-most-relevant` seems better but to > wordy. > > Do any of you have any ideas? > > Examples: > > (the-function < first '((3 pears) (1 banana) (2 apples))) ; find-min > would be a shorthand for this > '(1 banana) > > (the-function > first '((3 pears) (1 banana) (2 apples))) ; find-max > would be a shorthand for this > '(3 pears) > > (the-function string<? (compose1 symbol->string second) '((3 pears) (1 > banana) (2 apples))) > '(2 apples) > > (the-function string>? (compose1 symbol->string second) '((3 pears) (1 > > banana) > (2 apples))) > '(3 pears) > > *https://github.com/lexi-lambda/racket-alexis-collections/pull/9#issuecomment-145727937 > <https://github.com/lexi-lambda/racket-alexis-collections/pull/9#issuecomment-145727937>* > > -- > You received this message because you are subscribed to the Google Groups > "Racket Users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.

