I did not separate types.cr to type.cr and expr.cr because function type requires the definition of Crisp::Expr. They depend on each definitions.