eval now returns expr instead of int, allowing functions to remain functions when evaluated