Jason Grout wrote: > kcrisman wrote: > >> On Dec 14, 9:19 am, Carlos Córdoba <ccordob...@gmail.com> wrote: >> >>> I don't think it would be so hard to do but this could break >>> interoperability with Python, the language on which Sage is based. Besides >>> it could make Sage like a dialect of python, something that sage devs don't >>> want to do. >>> >>> Unfortunately python is not a very friendly functional programming >>> language, although it has some constructs that can help you if you like to >>> do things in the functional style. >>> >>> Hope this helps, >>> Carlos >>> >>> 2009/12/13 Alasdair <amc...@gmail.com> >>> >>> >>> >>> >>>> In some CAS's (Sage, Maxima), the "lambda" construct is used for an >>>> anonymous function: >>>> p=prime_range(30) >>>> map(lambda x:x^2+1,p) >>>> whereas in others, an arrow notation is used: >>>> map(x->x^2+1,p) (Maple, MuPAD) >>>> map(x+->x^2+1,p) (Axiom) >>>> I'm very fond of the convenience of arrow notation. Would it be very >>>> hard to incorporate such a notation into the Sage parser? >>>> >> If this would cause a Python syntax error, then presumably foo -> bar >> could be turned into lambda foo: bar, which would be completely >> native. Perhaps someone who is quite familiar with the preparser will >> comment. But this seems like a reasonable thing to add, particularly >> for those coming from Maple. What does Mathematica do for such >> anonymous functions (if anything)? >> > > > It looks like -> might cause a syntax error, at least in a trivial case: > > sage: x -> x^2 > ------------------------------------------------------------ > File "<ipython console>", line 1 > x -> x**Integer(2) > ^ > SyntaxError: invalid syntax > > > We currently print out things in sort of functional notation: > > sage: f(x)=x^2 > sage: f > x |--> x^2 > > I don't know if it's a good idea to make this valid Sage syntax, though. > I'm on the fence, but leaning towards not favoring it just because > of the added complexity and the departure from true Python, and the > python version isn't all that bad. > Note that -> gets a meaning in Python 3, to annotate the result of a function:
def foo(a: int) -> float: ... I don't think this is a technical problem as one can rely on the statement to start with "def", but at least -> already means something. Dag Sverre -- To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to sage-support+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-support URL: http://www.sagemath.org