Q
'''
- quote, stack = stack
+ try:
+ quote, stack = stack
+ except ValueError:
+ raise StackUnderflowError
return stack, concat(quote, expression), dictionary
.. _cons list: https://en.wikipedia.org/wiki/Cons#Lists
'''
+from .errors import NotAListError
def list_to_stack(el, stack=()):
# RuntimeError: maximum recursion depth exceeded
# on quotes longer than sys.getrecursionlimit().
- return (quote[0], concat(quote[1], expression)) if quote else expression
+## return (quote[0], concat(quote[1], expression)) if quote else expression
# Original implementation.
# In-lining is slightly faster (and won't break the
# recursion limit on long quotes.)
-## temp = []
-## while quote:
-## item, quote = quote
-## temp.append(item)
-## for item in reversed(temp):
-## expression = item, expression
-## return expression
+ temp = []
+ while quote:
+ if not isinstance(quote, tuple):
+ raise NotAListError
+ item, quote = quote
+ temp.append(item)
+ for item in reversed(temp):
+ expression = item, expression
+ return expression