julia> (d::Int)(x::Int) = d + x # what does this mean ?
It defines a method so that you can call a
(d::Int)) with a single argument of type
x::Int) that returns the sum of the two.
Don’t define this method.
Also my first thought. What is that? That’s problematic and should be deleted.
It was in REPL syntax so I hope it either come from doing something random that didn’t error, or from a tutorial demostrating some funny/dangerous things that had a poor explaination.
Ppl please correct me if I am wrong, but I think this is called a “functor” but it’s not the same functor as in category theory.
It allows you to use an element of a type as a
callable i.e. like a function.
You can do this for any type. But it doesn’t really make that much sense for integers. But there is precedent in Ruby where 3.times(fn) runs
fn 3 times. But in Ruby everything is an object and their implementation causes performance issues IIUC.
(d::Int)(x::Int) = d + x
Basically, it says, any element
d that is of
Int type, you can now write
d(x) and return
x is also an
y = 3; y(4) # yields 7
This kind of things is used in Flux.jl to make
Dense layers easier to write. It’s almost like a function factory kinda thing.
See my tweet also https://twitter.com/search?q=julia%20ruby&src=typed_query
Formally speaking this is just a method of Int which than makes Int a functor. It is not functor itself. As mentioned before this is a really bad idea for Int, but implementing method () provide useful syntax for function-like types, e.g. for own implementation of polynomials or different class of parametrisable operations.