If you want a deterministic smart contract language, you're better off avoiding the EVM, or worse, Solidity.
Tezos (plug, plug, I'm the lead on the project) has a VM with a full formal specification, and even a rudimentary embedding in Coq. It's statically typed and purely functional.