caramel is a functional language for building type-safe, scalable, and maintainable applications