Some operations to construct type-annotated FlatCurry programs.
Author: Michael Hanus
Version: May 2021
                baseType
                  ::  (String,String) -> TypeExpr  A base FlatCurry type.  | 
              
            
                (~>)
                  ::  TypeExpr -> TypeExpr -> TypeExpr  A function type.  | 
              
            
                unitType
                  ::  TypeExpr  Type ()
                as a FlatCurry type.
               | 
              
            
                charType
                  ::  TypeExpr  Type Char
                as a FlatCurry type.
               | 
              
            
                boolType
                  ::  TypeExpr  Type Bool
                as a FlatCurry type.
               | 
              
            
                listType
                  ::  TypeExpr -> TypeExpr  Constructs a list type from an element type.  | 
              
            
                stringType
                  ::  TypeExpr  Type String
                as a FlatCurry type.
               | 
              
            
                tupleType
                  ::  [TypeExpr] -> TypeExpr  Constructs a tuple type from list of component types.  | 
              
            
                tupleCons
                  ::  Int -> (String,String)  Generates an n-ary tuple constructor (only meaningful for n>1).
               | 
              
            
                tupleExpr
                  ::  [AExpr TypeExpr] -> AExpr TypeExpr  Constructs a tuple expression.  | 
              
            
                string2TAFCY
                  ::  String -> AExpr TypeExpr   | 
              
            
| 
                    
                     
                       A base FlatCurry type. 
  | 
                  
                
| 
                    
                     
                       A function type. 
  | 
                  
                
| 
                    
                    
                    
                     
                      Type  
  | 
                  
                
| 
                    
                    
                    
                     
                      Type  
  | 
                  
                
| 
                    
                    
                    
                     
                      Type  
  | 
                  
                
| 
                    
                     
                       Constructs a list type from an element type. 
  | 
                  
                
| 
                    
                    
                    
                     
                      Type  
  | 
                  
                
| 
                    
                     
                       
                      Generates an   | 
                  
                
| 
                    
                     
                       
  |