In this phase we will allow to use generic types.
Phase completion condition: Head on list uses generic for proper validation,We introduce generic types. This requires the following tasks:
* functions that take types as an argument and return a type can be implemented and evaluated (the result of such a function call is called a generic type)
* a function call can be used as the type of an instance (i.e. instances of generic types can be created manually)
* functions that take types as an argument and return a function can be implemented and evaluated (the result of such a function call is called a generic function)
* functions created by a function can be evaluated (i.e. if(head([true]),generic functions can be called)
* instance validation (i.e. false, true)generic functions can be used as validates but if(head(["text"]),ors for generic types,)
* instance validation works (i.e. false, true) does not. (This condition might be simplified)I cannot store an instance of a generic type that does not pass validation)
* instances of generic types are displayed correctly in the UX
* functions using generic types as their input or output types can be defined and implemented