aboutsummaryrefslogtreecommitdiff
path: root/core/collections.nom
diff options
context:
space:
mode:
Diffstat (limited to 'core/collections.nom')
-rw-r--r--core/collections.nom56
1 files changed, 28 insertions, 28 deletions
diff --git a/core/collections.nom b/core/collections.nom
index d4d4c5b..97bc7ad 100644
--- a/core/collections.nom
+++ b/core/collections.nom
@@ -9,18 +9,18 @@ use "core/operators.nom"
# List/dict functions:
# Indexing
-immediately:
+immediately
compile [..]
%index st to last in %list, %index nd to last in %list, %index rd to last in %list
%index th to last in %list
..to: Lua value "utils.nth_to_last(\(%list as lua expr), \(%index as lua expr))"
-immediately:
+immediately
parse [first in %list, first %list] as: 1 st in %list
parse [last in %list, last %list] as: 1 st to last in %list
# Membership testing
-immediately:
+immediately
action [%item is in %list, %list contains %item, %list has %item]
for %key = %value in %list
if (%key is %item): return (yes)
@@ -30,12 +30,12 @@ immediately:
%item isn't in %list, %item is not in %list
%list doesn't contain %item, %list does not contain %item
%list doesn't have %item, %list does not have %item
- ..:
+ ..
for %key = %value in %list
if (%key is %item): return (no)
return (yes)
-immediately:
+immediately
# Note: it's important to have the space after "[" to prevent confusion if %index is a string
compile [%list has key %index, %list has index %index] to
Lua value ".."
@@ -47,21 +47,21 @@ immediately:
%list doesn't have index %index, %list does not have index %index
..to: Lua value "((\(%list as lua expr))[ \(%index as lua expr)] == nil)"
- compile [number of keys in %list] to:
+ compile [number of keys in %list] to
Lua value "utils.size(\(%list as lua expr))"
- compile [append %item to %list, add %item to %list, to %list add %item, to %list append %item] to:
+ compile [append %item to %list, add %item to %list, to %list add %item, to %list append %item] to
Lua "table.insert(\(%list as lua expr), \(%item as lua expr))"
- compile [pop from %list, remove last from %list] to:
+ compile [pop from %list, remove last from %list] to
Lua "table.remove(\(%list as lua expr))"
- compile [remove index %index from %list] to:
+ compile [remove index %index from %list] to
Lua "table.remove(\(%list as lua expr), \(%index as lua expr))"
# List Comprehension
-immediately:
- compile [%expression for %item in %iterable] to:
+immediately
+ compile [%expression for %item in %iterable] to
assume (%item.type is "Var") or barf ".."
List comprehension has the wrong type for the loop variable. Expected Var, but got: \(%item.type)
return
@@ -78,7 +78,7 @@ immediately:
compile [..]
%expression for %index from %start to %stop via %step
%expression for %index from %start to %stop by %step
- ..to:
+ ..to
assume (%index.type is "Var") or barf ".."
List comprehension has the wrong type for the loop variable. Expected Var, but got: \(%index.type)
return
@@ -98,7 +98,7 @@ immediately:
..as: %expression for % from %start to %stop via %step
parse [%expression for all %start to %stop] as: %expression for all %start to %stop via 1
- compile [%expression for %key = %value in %iterable] to:
+ compile [%expression for %key = %value in %iterable] to
assume (%key.type is "Var") or barf ".."
List comprehension has the wrong type for the key loop variable. Expected Var, but got: \(%key.type)
assume (%value.type is "Var") or barf ".."
@@ -114,8 +114,8 @@ immediately:
end)()
# Dict comprehensions
-immediately:
- compile [%key = %value for %item in %iterable] to:
+immediately
+ compile [%key = %value for %item in %iterable] to
assume (%item.type is "Var") or barf ".."
Dict comprehension has the wrong type for the loop variable. Expected Var, but got: \(%item.type)
# Note: it's important to have the space after "[" to prevent confusion if %key is a string
@@ -130,7 +130,7 @@ immediately:
end)()
parse [%key = %value for all %iterable] as: %key = %value for % in %iterable
- compile [%key = %value for %src_key = %src_value in %iterable] to:
+ compile [%key = %value for %src_key = %src_value in %iterable] to
assume (%src_key.type is "Var") or barf ".."
Dict comprehension has the wrong type for the key loop variable. Expected Var, but got: \(%src_key.type)
assume (%src_value.type is "Var") or barf ".."
@@ -146,11 +146,11 @@ immediately:
return comprehension;
end)()
-immediately:
- action [%lists flattened]:
+immediately
+ action [%lists flattened]
%flat <- []
- for %list in %lists:
- for %item in %list:
+ for %list in %lists
+ for %item in %list
add %item to %flat
return %flat
@@ -158,8 +158,8 @@ immediately:
parse [keys in %dict] as: %k for %k = %v in %dict
parse [values in %dict] as: %v for %k = %v in %dict
-# Sorting:
-immediately:
+# Sorting
+immediately
compile [sort %items] to: Lua "table.sort(\(%items as lua expr));"
compile [sort %items by %key_expr] to
Lua ".."
@@ -167,26 +167,26 @@ immediately:
return \(%key_expr as lua expr);
end);
-immediately:
- action [%items sorted, sorted %items]:
+immediately
+ action [%items sorted, sorted %items]
%copy <- (% for all %items)
sort %copy
return %copy
- action [%items sorted by %key]:
+ action [%items sorted by %key]
%copy <- (% for all %items)
sort %copy by %key
return %copy
- action [unique %items]:
+ action [unique %items]
%unique <- []
%seen <- {}
- for all %items:
+ for all %items
unless: % in %seen
add % to %unique
(% in %seen) <- (yes)
return %unique
-immediately:
+immediately
# Metatable stuff
compile [set %dict's metatable to %metatable] to
Lua "setmetatable(\(%dict as lua expr), \(%metatable as lua expr));"