When Must I Use `lambda`?
asked 2016-12-19 22:21:48 -0500
This post is a wiki. Anyone with karma >750 is welcome to improve it.
ahat(atheta)=vector([cos(atheta),sin(atheta),0]) and got:
TypeError: unable to convert (cos(atheta), sin(atheta), 0) to a symbolic
Then I tried
ahat=lambda atheta: vector([cos(atheta),sin(atheta),0]) and got what I obviously wanted.
Ordinarily, there is no problem with the ordinary kind of function declaration. How am I to tell when I can and when I cannot use the ordinary kind of function declaration?
Perhaps this is just a bug as indicated by the traceback line:
File "/tmp/tmpi4HZNt/___code___.py", line 3, in <module>
exec compile(u'__tmp__=var("atheta"); ahat = symbolic_expression(vector([cos(atheta),sin(atheta),_sage_const_0 ])).function(atheta)
Shouldn't this be the same as that generated by the labmda declaration above?
/tmp/tmp4V6zSv/___code___.py:exec compile(u'ahat=lambda atheta:vector([cos(atheta),sin(atheta),_sage_const_0 ])' + '\n', '', 'single')
That is to say, why are function declarations not treated as syntactic sugars (algebraic identities) for labmda expressions? Is not sagemath a computer aided algebra system?