Related to this question: what if you want to use the name of a base 
function for your type, where the meaning is _not_ related, but there is no 
sensible function that would have that meaning for your type?  

E.g., in GaussianMixtures, I used `map(::GMM, ...)` for 
maximum-a-posteriori adaptation of the GMM.  I can't see ::GMM in the role 
of a ::Function, so I personally do not mind this re-use of an existing 
function name from Base.  Others may disagree wholeheartedly. 

---david

On Monday, March 16, 2015 at 3:07:37 PM UTC+1, Kristoffer Carlsson wrote:
>
> push! it is then.
>
> I will write on the JuliaGeometry repo what I am doing.
>
> On Monday, March 16, 2015 at 2:30:32 PM UTC+1, Simon Danisch wrote:
>>
>> I'm very much in favor of overloading, if the meaning doesn't deviate to 
>> much.
>> Like this, you don't have to read any documentations, and the base 
>> functions become synonymous with a certain task. 
>> So if you want to add an element to some object, first thing you can try 
>> is to use push! and if that works, you are not forced to look up the 
>> documentation for that datatype.
>>
>> By the way, it seems you're developing a mesh type. I still hope to unify 
>> mesh representation, which is admittedly not the simplest task. 
>> Maybe you can take inspirations from JFineale 
>> <https://github.com/PetrKryslUCSD/JFinEALE.jl>, Meshes 
>> <https://github.com/JuliaGeometry/Meshes.jl>, Meshes2 
>> <https://github.com/JuliaGeometry/Meshes2.jl>, MeshIO 
>> <https://github.com/JuliaIO/MeshIO.jl> and take part in the discussion 
>> in JuliaGeometry <https://github.com/JuliaGeometry/meta>.
>> Would be a shame, if everyone writes their own code and in the end, it 
>> all doesn't work together.
>> This is especially important for a unified visualization infrastructure.
>>
>> Am Montag, 16. März 2015 14:11:54 UTC+1 schrieb Kristoffer Carlsson:
>>>
>>> Simple example. Let's say I have the type
>>>
>>> type Mesh
>>>     elements::Vector{Element}
>>>     node::Vector{Node}
>>> end
>>>
>>> and I want to add functions to add elements or nodes. I could either do 
>>> this by overloading push! like this:
>>>
>>> push!(mesh::Mesh, elem::Element) = push!(mesh.elements, elem)
>>>
>>> or add a new method
>>>
>>> addelement(mesh::Mesh, elem::Element) = push!(mesh.elements, elem)
>>>
>>> I know code where operators are heavily overloaded can be difficult to 
>>> read however, this case seems quite simple.
>>>
>>> Anyone have any advice for which way to prefer? What is more Julian?
>>>
>>> Best regards,
>>> Kristoffer Carlsson
>>>
>>>

Reply via email to