   defp short_circuit_helper([h|[]], table, _) do
     meaning(h, table)
   end
-
   defp short_circuit_helper([h|t], table, func) do
     result = meaning(h, table)
 


    nil
  end

  def apply_primitive(:+, tail) do
    List.foldl tail, 0, &(&1 + &2)
  end

  def apply_primitive(:-, tail) do
    Enum.reduce tail, &(&2 - &1)
  end

  def apply_primitive(n, _) do
    raise "error: no primitive matches #{n}"
  end

  def appli([:primitive, fun_rep], vals) do
    apply_primitive(fun_rep, vals)
  end
  def appli([:non_primitive, fun_rep], vals) do
    apply_closure(fun_rep, vals)
  end
