code: def bind_type(python_value):
      
      binding_table = {'bool': Bool, 'int': Int, 'float': Float}
  
      if python_value is None:
          return NoneType()
  
      python_type = type(python_value)
  
      gibica_type = binding_table.get(python_type.__name__)
  
      if gibica_type is None:
          raise TypeError('Impossible to recognize underlying type.')
      return gibica_type(python_value)
docs: Return a Gibica type derived from a Python type.