This surprised me as well, where did you find this syntax?

On Monday, September 12, 2016 at 1:59:33 PM UTC+2, DNF wrote:
>
> I haven't looked very closely at your code, but a brief look reveals that 
> you are defining your functions in a very unusual way. Two examples:
>
> function (f::FIRFilter)(x)
>     return filt(f, x)
> end
>
> function(p::pnseq)(n,T=Int64)
>     out = Array{T}(n)
>     for i in eachindex(out)
>         if p.count < p.width
>             p.cache = rand(Int64)
>             p.count = 64
>         end
>         out[i] = p.cache & p.mask
>         p.cache >>= p.width
>         p.count -= p.width
>     end
>     return out
> end
>
> I have never seen this way of defining them before, and I am pretty 
> surprised that it's not a syntax error. Long-form function signatures 
> should be of the form
> function myfunc{T<:SomeType}(myarg1::T, myarg2)
> where the type parameter section (in curly bracket) is optional.
>
> As I said, I'm surprised it's not a syntax error, but maybe it gets parsed 
> as an anonymous function (just guessing here). If so, and if you are using 
> version 0.4, you can get slow performance.
>
> You can read here about the right way to define functions: 
> http://docs.julialang.org/en/stable/manual/functions/
>
> On Monday, September 12, 2016 at 1:32:48 PM UTC+2, Neal Becker wrote:
>>
>> As a first (nontrivial) try at julia, I put together some simple DSP 
>> code, 
>> which represents a 
>> pn generator (random fixed-width integer generator) 
>> constellation mapping 
>> interpolating FIR filter (from DSP.jl) 
>> decimating FIR filter (from DSP.jl) 
>> mean-square error measure 
>>
>> Source code is here: 
>> https://github.com/nbecker/julia-test 
>>
>> Profile result is here: 
>> https://gist.github.com/anonymous/af2459fc831ddbeb6e3be25e5c8d5197 
>>
>> If I understand how to read this profile (not sure I do) it looks like 
>> 1/2 
>> the time is spent in PnSeq.jl, which seems surprising.   
>>
>> PnSeq.jl calls rand() to get a Int64, caching the result and then 
>> providing 
>> N bits at a time to fill an Array.  It's supposed to be a fast way to get 
>> an 
>> Array of small-width random integers. 
>>
>> Most of the number crunching should be in the FIR filter functions, which 
>> I 
>> would have expected to use the most time. 
>>
>> Anyone care to make suggestions on this code, how to make it faster, or 
>> more 
>> idiomatic Julia?  I'm not proficient with Julia or with Matlab (I've been 
>> using python/numpy/c++ for all my work for years). 
>>
>>
>>

Reply via email to