use compile, not eval
another bug