Reuse as_list().
This commit is contained in:
parent
9f04aa97e2
commit
3d199c1106
|
|
@ -83,7 +83,28 @@ let empty_list = JoyType(kind: joyList, listVal: Nil[JoyType]())
|
||||||
██║ ██║ ██║ ██║██║ ╚════██║
|
██║ ██║ ██║ ██║██║ ╚════██║
|
||||||
╚██████╔╝ ██║ ██║███████╗███████║
|
╚██████╔╝ ██║ ██║███████╗███████║
|
||||||
╚═════╝ ╚═╝ ╚═╝╚══════╝╚══════╝
|
╚═════╝ ╚═╝ ╚═╝╚══════╝╚══════╝
|
||||||
|
]#
|
||||||
|
|
||||||
|
|
||||||
|
#[
|
||||||
|
|
||||||
|
Convert from nodes to values (or raise errors!)
|
||||||
|
|
||||||
|
]#
|
||||||
|
|
||||||
|
proc as_list(thing: JoyType): JoyListType =
|
||||||
|
# You've got a node, you want the list or it's an error.
|
||||||
|
case thing.kind
|
||||||
|
of joyList:
|
||||||
|
return thing.listVal
|
||||||
|
else:
|
||||||
|
raise newException(ValueError, "Only lists!")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#[
|
||||||
Push values onto stacks wrapping them in the correct node kinds.
|
Push values onto stacks wrapping them in the correct node kinds.
|
||||||
|
|
||||||
]#
|
]#
|
||||||
|
|
@ -135,11 +156,7 @@ proc pop_list(stack: JoyListType): (JoyListType, JoyListType) =
|
||||||
# we want the List.
|
# we want the List.
|
||||||
if stack.isEmpty:
|
if stack.isEmpty:
|
||||||
raise newException(ValueError, "Not enough values on stack.")
|
raise newException(ValueError, "Not enough values on stack.")
|
||||||
case stack.head.kind:
|
return (as_list(stack.head), stack.tail)
|
||||||
of joyList:
|
|
||||||
return (stack.head.listVal, stack.tail)
|
|
||||||
else:
|
|
||||||
raise newException(ValueError, "Not a list.")
|
|
||||||
|
|
||||||
|
|
||||||
proc pop_bool(stack: JoyListType): (bool, JoyListType) =
|
proc pop_bool(stack: JoyListType): (bool, JoyListType) =
|
||||||
|
|
@ -161,7 +178,6 @@ proc pop_bool(stack: JoyListType): (bool, JoyListType) =
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# ███████╗██╗ ██╗██████╗ ██████╗ ███████╗███████╗███████╗██╗ ██████╗ ███╗ ██╗
|
# ███████╗██╗ ██╗██████╗ ██████╗ ███████╗███████╗███████╗██╗ ██████╗ ███╗ ██╗
|
||||||
# ██╔════╝╚██╗██╔╝██╔══██╗██╔══██╗██╔════╝██╔════╝██╔════╝██║██╔═══██╗████╗ ██║
|
# ██╔════╝╚██╗██╔╝██╔══██╗██╔══██╗██╔════╝██╔════╝██╔════╝██║██╔═══██╗████╗ ██║
|
||||||
# █████╗ ╚███╔╝ ██████╔╝██████╔╝█████╗ ███████╗███████╗██║██║ ██║██╔██╗ ██║
|
# █████╗ ╚███╔╝ ██████╔╝██████╔╝█████╗ ███████╗███████╗██║██║ ██║██╔██╗ ██║
|
||||||
|
|
@ -178,14 +194,6 @@ proc pop_bool(stack: JoyListType): (bool, JoyListType) =
|
||||||
# concatenating them.
|
# concatenating them.
|
||||||
|
|
||||||
|
|
||||||
proc as_list(thing: JoyType): JoyListType =
|
|
||||||
case thing.kind
|
|
||||||
of joyList:
|
|
||||||
return thing.listVal
|
|
||||||
else:
|
|
||||||
raise newException(ValueError, "Only lists!")
|
|
||||||
|
|
||||||
|
|
||||||
proc push_quote(quote: JoyType, expression: JoyType): JoyType =
|
proc push_quote(quote: JoyType, expression: JoyType): JoyType =
|
||||||
#[
|
#[
|
||||||
Put the quoted program onto the stack-of-stacks.
|
Put the quoted program onto the stack-of-stacks.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue