input: 
  def hash_table_operations(operation_list: List[str]) -> List[Any]:
      """
      Implement a hash table that supports the following operations:
      1. Insert: 'INSERT key value'
      2. Delete: 'DELETE key'
      3. Retrieve: 'RETRIEVE key'
      The method should return the current state of the hash table after performing all given operations.
      For 'INSERT', it will return the table as is.
      For 'DELETE', it will return an updated table where the key has been removed.
      For 'RETRIEVE', it will return the value associated with the key if it exists, otherwise None.
      
      Example:
      For operation_list = ['INSERT foo bar', 'RETRIEVE foo', 'DELETE foo', 'RETRIEVE foo'],
      the output should be ['bar', None].
      """
      ht = HashTable()
      results = []
      for operation in operation_list:
          op, *args = operation.split()
          if op == 'INSERT':
              key, value = args
              ht.insert(key, value)
          elif op == 'DELETE':
              key = args[0]
              ht.delete(key)
          elif op == 'RETRIEVE':
              key = args[0]
              results.append(ht.retrieve(key))
      return results
  
output:     
      class HashTable:
          def __init__(self):
              self.table = {}
          
          def insert(self, key, value):
              self.table[key] = value
          
          def delete(self, key):
              if key in self.table:
                  del self.table[key]
          
          def retrieve(self, key):
              return self.table.get(key, None)
  