They apparently differ in the return type. I don't think clojure.lang.Reflector considers the return type hint when resolving methods.
Thanks, Ambrose On Fri, Jun 26, 2015 at 4:16 AM, Stephen Wakely <fungus.humun...@gmail.com> wrote: > javap gives : > > public <T> com.cra.figaro.language.AtomicDist<T> > apply(scala.collection.Seq<scala.Tuple2<java.lang.Object, > com.cra.figaro.language.Element<T>>>, com.cra.figaro.language.Name<T>, > com.cra.figaro.language.ElementCollection); > > public <T> com.cra.figaro.language.CompoundDist<T> > apply(scala.collection.Seq<scala.Tuple2<com.cra.figaro.language.Element<java.lang.Object>, > com.cra.figaro.language.Element<T>>>, com.cra.figaro.language.Name<T>, > com.cra.figaro.language.ElementCollection); > > > Bit of an eyesore, but the two methods only differ in the generic types.. > > On Thu, Jun 25, 2015 at 9:11 PM Stephen Wakely <fungus.humun...@gmail.com> > wrote: > >> >> So using reflection on the objects gives the following signatures - they >> have identical signatures : >> >> {:name apply, >> :return-type com.cra.figaro.language.CompoundDist, >> :declaring-class com.cra.figaro.language.Dist$, >> :parameter-types >> [scala.collection.Seq >> com.cra.figaro.language.Name >> com.cra.figaro.language.ElementCollection], >> :exception-types [], >> :flags #{:public}} >> {:name apply, >> :return-type com.cra.figaro.language.AtomicDist, >> :declaring-class com.cra.figaro.language.Dist$, >> :parameter-types >> [scala.collection.Seq >> com.cra.figaro.language.Name >> com.cra.figaro.language.ElementCollection], >> :exception-types [], >> :flags #{:public}} >> >> >> On Thu, Jun 25, 2015 at 9:05 PM Stuart Sierra < >> the.stuart.sie...@gmail.com> wrote: >> >>> Scala has to compile down to JVM bytecode just like Clojure, but it may >>> change method signatures along the way. >>> >>> You could try running `javap` to disassemble the compiled Scala bytecode >>> and figure out what the method signatures actually are. Or use Java >>> reflection to examine the objects you have and see what methods they >>> declare. >>> >>> –S >>> >>> >>> >>> On Tuesday, June 23, 2015 at 10:51:55 AM UTC-4, Stephen Wakely wrote: >>>> >>>> I am trying to call into some Scala that has the following overloaded >>>> methods : >>>> >>>> def apply[T](clauses: (Double, Element[T])*)(implicit name: Name[T], >>>> collection: ElementCollection) = >>>> new AtomicDist(name, clauses.toList, collection) >>>> >>>> def apply[T](clauses: (Element[Double], Element[T])*)(implicit name: >>>> Name[T], collection: ElementCollection) = >>>> new CompoundDist(name, clauses.toList, collection) >>>> >>>> So one method takes a list of tuples of Double to Element and the other >>>> method takes a list of tuples of Element to Element. >>>> >>>> I am using t6.from-scala (https://github.com/t6/from-scala) to build >>>> up my list of Tuples. But when building these up there is no way to specify >>>> explicit type information about the collections. Consequently when calling >>>> this apply method Clojure will always choose to call the first method - >>>> even when my list is a collection of Element to Element tuples. >>>> >>>> I can definitely appreciate how it is going to be tricky for Clojure to >>>> determine the correct overload to use here. Is there any way I can somehow >>>> force it to call the correct overload myself? >>>> >>>> >>>> Thanks >>>> >>>> Stephen >>>> >>>> >>>> >>>> -- >>> 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 >>> Note that posts from new members are moderated - please be patient with >>> your first post. >>> 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 >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "Clojure" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to clojure+unsubscr...@googlegroups.com. >>> For more options, visit https://groups.google.com/d/optout. >>> >> -- > 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 > Note that posts from new members are moderated - please be patient with > your first post. > 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 > --- > You received this message because you are subscribed to the Google Groups > "Clojure" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- 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 Note that posts from new members are moderated - please be patient with your first post. 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 --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.