When you write:

```
sage: f(x)=0^x
```

You define a "symbolic function":

```
sage: type(f)
<type 'sage.symbolic.expression.Expression'>
sage: f.parent()
Callable function ring with argument x
```

This is a kind of mathematical formula (like `exp(cos(pi)) + log(x)`

). This is an object you can derivate, integrate, and so on.

Instead you can define a Python function:

```
sage: def f(x):
....: return 0^x
sage: f(0)
1
sage: type(f)
<type 'function'>
```

For such easy-to-define function, you can be shorter, by typing:

```
sage: f = lambda x : 0^x
sage: f(0)
1
sage: type(f)
<type 'function'>
```

**EDIT**

According to your comment, it seems i misunderstood your question. Actually, the problem is not about evaluating the symbolic function `f`

but about `SR(0)^SR(0)`

being not defined. Thanks for reporting, @kcrisman opened trac ticket 18088.

Using a python lambda function, this will work. That is,

`f = lambda x: 0^x`

will give a function that does what you want. So, this indicates that it is a matter of how Sage is defining its functions.