Just to clarify: I dont' care what the type of the output is. I guess (seq [[]]) would actually be more consistent with the existing function. The point is that the output of 0-arg combinations should be a seq containing an empty vector (or whatever other types, I don't care), not an empty seq.
Anyone willing to sign off?? On Jan 21, 5:34 pm, Jason Wolfe <jawo...@berkeley.edu> wrote: > I just got bit by (clojure.contrib.lazy-seqs/combinations) returning > nil, not [[]] as I expected. I could see arguments for either being > the "correct" output, but let me give my case for [[]]. > > In my mind, asking what the output of (combinations) should be is > completely analogous to asking what the value of 0^0 should be. > Either 0 or 1 seems defensible, but the accepted answer is 1 (for > reasons I won't go into here). Similarly, Clojure (*) ==> 1. > > If you don't see the connection, note that for all non-empty seqs of > seqs "args", > (= (count (apply combinations args)) (apply * (map count args))). > > If (= (combinations) [[]]), then this would hold always. Plus, this > is what would make it work in my application. I can go into more > details if you like, but the basic idea use case is finding the set of > all allowed variable bindings, given a possible set of possible values > for each variable. If there are no variables, this set should consist > of the single "empty binding" rather than "no bindings possible". > > Will anyone sign off on adding this as a clojure.contrib issue? > > Thanks, > Jason --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~----------~----~----~----~------~----~------~--~---