I started exploring Julia very recently and I like it. I’ve been chatting about it with colleagues.
Many people coming from OOP languages (Python…) like the syntax object.method(a,b,c…).
Since you can get a preview of the available methods acting on object with tab press.
Would it be possible to have that in Julia (I’m assuming it’s not already there) to improve usability?
Let say I define a IIR filter struct
mutable struct IIRfilter state; alpha; IIRfilter(state,alpha) = 0<=alpha<=1 ? new(state,alpha) : error("alpha must between 0 and 1") IIRfilter(alpha) = 0<=alpha<=1 ? new(NaN,alpha) : error("alpha must be between 0 and 1") end
and a method
function filter(filter::IIRfilter, x) if isnan(filter.state) filter.state = x else filter.state = filter.alpha*filter.state + (1-filter.alpha)*x; end return filter.state end
I can now use my filter
begin N = 3000 f = IIRfilter(0.9) Random.seed!(1) xv = randn(N,1); xf = zeros(N,1); end;
begin for i = collect(1:N) xf[i] = filter(f,xv[i]) end end
It would be nice to be able to start typing
the press a tab and get
f.state f.alpha f.filter(...)
as options instead of just
basically get a preview of all available methods for the IIRfilter type (where IIRfilter is the first argument of the method if we are thinking about standard OOP, or maybe a more general solution that is closer in spirit with multiple dispatch?)
Is there a reason why we might not want this or we would actually want to actively discourage it?