Implement toy-language types and generic substitution | OpenAI