Lorentz is a stack-based embedded Domain Specific Language (eDSL) in Haskell that compiles to Michelson.
Some of its noteworthy features are:
An expressive type system, including product/sum types and parametric polymorphism.
Powerful type inference.
Type-safe mechanisms for writing smart contracts with an upgradeable storage and contract migrations.
The ability to easily share and reuse components of a contract as Haskell packages.
The ability to automatically generate documentation for your smart contract in Markdown format,
and to keep it up-to-date with the contract's code as it evolves.