yeah, sorry. i realised i'd missed len=10 just after i posted and tried to delete, but apparently wasn't quick enough. andrew
On Wednesday, 26 February 2014 21:37:24 UTC-3, Leah Hanson wrote: > > If "onlyleaves=true", then only results from concrete types are > considered. By default, "onlyleaves=false", so all subtypes/descendants are > included. So, "onlyleaves=true" considers a subset of descendants. > > The resulting list of functions would not change if all methods happened > to be implemented only on the concrete types. Also, the list is the lim=10 > most popular functions, so onlyleaves=true does not need to be a subset of > onlyleaves=false: the top ten only considering the concrete types might be > entirely different from the top ten considering all descendent types. > > Does this make it clearer? > > -- Leah > > > On Wed, Feb 26, 2014 at 4:11 PM, andrew cooke <[email protected]<javascript:> > > wrote: > >> >> hang on... what does onlyleaves do? when true should the results be a >> subset of the the results when it's false? they are not, in the examples >> in the doc. :o( >> >> >> On Wednesday, 26 February 2014 19:25:06 UTC-3, andrew cooke wrote: >>> >>> this is great. from just looking at the example in the docs i can see >>> i've missed a couple of methods! thanks. >>> >>> On Wednesday, 26 February 2014 15:54:07 UTC-3, Leah Hanson wrote: >>>> >>>> The "% coverage" part is done. You can see the documentation at >>>> https://github.com/astrieanna/TypeCheck.jl# >>>> methodswithdescendantstdatatypeonlyleavesboolfalselimint10 (anchor in >>>> the README). Please try it out and let me know whether it's helpful. (Note >>>> that abstract types are included by default; using onlyleaves=true to get >>>> your requested behavior.) >>>> >>>> Usage statistics are definitely harder, but only because finding uses >>>> of a function in general is harder. I'll think about that a bit more; >>>> check_method_calls might have some of the needed infrastructure of that. >>>> >>>> Comparing types could be accomplished with a wrapper on the new >>>> methodswithdescendants function; I can add that. >>>> >>>> -- Leah >>>> >>>> >>>> On Tue, Feb 25, 2014 at 4:26 PM, andrew cooke <[email protected]>wrote: >>>> >>>>> >>>>> sweet. i'd like to see something like "% coverage". for Number, for >>>>> example, what % of concrete types have abs() defined? >>>>> >>>>> another useful statistic, which might not be possible, is across how >>>>> many modules is a function used - for example, which operation on Number >>>>> occurs in most modules? which are used only in one module? >>>>> >>>>> it would also be nice if you could compare types - what functions does >>>>> Integer (or sub types) have, that my type does not? >>>>> >>>>> and ponies! >>>>> >>>>> cheers, andrew >>>>> >>>>> ps i just looked at TypeCheck. check_loop_types is going to be sooo >>>>> useful.... >>>>> >>>>> >>>>> >>>>> On Tuesday, 25 February 2014 20:13:07 UTC-3, Leah Hanson wrote: >>>>> >>>>>> I'm planning to add a "which methods are defined for subtypes of this >>>>>> type" function to TypeCheck.jl this week. If there's any specific >>>>>> behavior >>>>>> you want it to have, let me know. :) >>>>>> >>>>>> -- Leah >>>>>> >>>>>> >>>>>> On Tue, Feb 25, 2014 at 2:52 PM, David Moon <[email protected]>wrote: >>>>>> >>>>>>> On Tuesday, February 25, 2014 7:14:37 AM UTC-5, David Moon wrote: >>>>>>>> >>>>>>>> >>>>>>>> The advantage of making it an explicit concept in the language, >>>>>>>> rather than just defining a method that signals an error, is that it >>>>>>>> can be >>>>>>>> checked at compile time. >>>>>>>> >>>>>>> >>>>>>> In Julia, compile time is load time. Specifically, after evaluating >>>>>>> a top-level expression (which may have loaded a whole lot of files) >>>>>>> check >>>>>>> each newly defined datatype or bitstype to see if there are any >>>>>>> required >>>>>>> methods that involve that type or its supertypes. If so, check if an >>>>>>> instance of the newly defined type would have all the required methods >>>>>>> applicable to it in the appropriate argument position. >>>>>>> >>>>>> >>>>>> >>>> >
