isEmpty should evaluate functions - otherwise, they always return true.

See #282