If you do code_typed on the following function, the :lambda Expr for the
function nef has an array of Symbol as its first argument. I thought that
array of Symbol was the prescribed type for this part of a lambda
expression and that is the case with all the other top-level function
lambdas I've looked at.
However, the :lambda Expr constructed for the cartesianarray call has
{:{j::Any}) as its first argument which contains a :(::) Expr rather than a
Symbol. Moreover, if you look in the second argument to the :lambda,
you'll see that j has the correct type Int64 whereas the type in the first
argument's :(::) is incorrect. So, is an array containing :(::) as the
first argument to a cartesianarray :lambda supposed to signify something or
is this simply a bug?
function nef(pstc_scale, x, t, output, weights, v_A, ref_A, v_B, ref_B,
decoder_B, input_B, gain_B, bias_B, encoder_A, gain_A, bias_A)
input_A = x .* encoder_A .* gain_A .+ bias_A
v_A, ref_A, spikes_A=run_neurons(input_A, v_A, ref_A)
delta_B = cartesianarray(Float64, (length(input_B),)) do j
sum(weights[spikes_A, j]) * pstc_scale
end
end