# Unexpected result in the evaluation of a function

I hope my question isn't stupid. Why does the following code result in 1 and not 3?

var('a b')
f(a, b) = gcd(a, b)
f(3, 6)

edit retag close merge delete

Sort by ยป oldest newest most voted

Your question is very much valid. This notation to define a function (which is specific to Sage, and which creates a kind of function object) sadly does not seem to behave well except in the simplest cases. This is a bug.

I recommend not using this function notation. Instead, for one-line functions try (as in Python):

f = lambda a, b: gcd(a, b)


and for more complicated ones:

def f(a, b):
# possibly more statements here
return gcd(a, b)


By the way, the result you got probably stems from the following:

sage: var('a b')
(a, b)
sage: gcd(a, b)
1

more

1

rburing thank you very much for your reply. Are there any intentions to repair that error? The truth is that it is very frustrating for someone who is just taking their first steps in Sage like me.

( 2018-12-30 18:53:04 +0100 )edit