input: Write a function to calculate the total cost of a shopping cart given the item prices, quantity, shipping cost, and applicable taxes. If the input list is empty, return 0. 
  assert calculate_total_cost([{"name": "widget", "price": 10, "quantity": 5 }, {"name": "thingy", "price": 7, "quantity": 3 }, {"name": "doodad", "price": 5, "quantity": 2 }], 7.50, 0.095)==108.3875
  assert calculate_total_cost([], 5.0, 0.10)==0
  assert calculate_total_cost([{"name": "book", "price": 15, "quantity": 2 }], 10.0, 0.05)==42.75
  assert calculate_total_cost([{"name": "toy", "price": 20, "quantity": 1 }, {"name": "game", "price": 30, "quantity": 2 }], 12.50, 0.08)==92.30
  assert calculate_total_cost([{"name": "software", "price": 80, "quantity": 1 }], 0, 0)==80.0
output: def calculate_total_cost(items, shipping_cost, tax_rate):
      if not items:
          return 0
      subtotal = sum(item["price"] * item["quantity"] for item in items)
      total_cost = subtotal + shipping_cost
      total_cost += total_cost * tax_rate
      return total_cost