>
> This is what I was looking for; so if I understand you correctly, you
> satisfy protocols by extending/monkey-patching Base.  This seems
> reasonable, but what do you do when you want to define your own protocol
> (e.g. Classifier), and Base doesn't have the functions you'd like to
> require (e.g. fit, predict)?
>

As Jameson said (I think): there isn't anything particularly special about
Base, except that it's installed/available by default. Users will need to
import your library to use your stuff, so if they want to extend a
(library) built-in, they will do `import MasonLib: fit, predict` rather
than the imports from Base.



On Tue, Apr 8, 2014 at 4:10 PM, Mason McGill <[email protected]>wrote:

> On Monday, April 7, 2014 8:51:20 PM UTC-7, Stefan Karpinski wrote:
>>
>> A couple of examples of informal protocols that are used all the time in
>> Julia and allow user defined types to easily hook into predefined generic
>> behaviors are the start/done/next protocol for iteration and the order and
>> sort! protocols ordering and sorting things. The ModInt 
>> example<https://github.com/JuliaLang/julia/blob/master/examples/modint.jl>shows
>>  that if you just define addition and multiplication for a new
>> user-defined numeric type, you can immediately construct matrices of that
>> type and multiply them (unfortunately, this example is currently 
>> broken<https://github.com/JuliaLang/julia/issues/6461>
>> ).
>>
>> This is what I was looking for; so if I understand you correctly, you
> satisfy protocols by extending/monkey-patching Base.  This seems
> reasonable, but what do you do when you want to define your own protocol
> (e.g. Classifier), and Base doesn't have the functions you'd like to
> require (e.g. fit, predict)?
>
> Is it the lack of multiple inheritance that's throwing you? Lack of formal
>> specifications for protocols? The fact that generic functions live outside
>> of types?
>>
>
> Nope; those all seem like thoughtful, reasonable design decisions : )
>
> After all this is sorted out, I'd be happy to distill this into a
> subsection for the Julia "Types" documentation about conventions for
> programming with protocols, if you think it belongs there.
>

Reply via email to