summaryrefslogtreecommitdiff
path: root/Lists/lists.b
diff options
context:
space:
mode:
authorseh <henesy.dev@gmail.com>2019-03-18 17:08:49 -0500
committerseh <henesy.dev@gmail.com>2019-03-18 17:08:49 -0500
commit87e325f2c9792ece2583761ca26c57318a698be9 (patch)
tree38078b62d7432dcebb75c990d20d39f483c4e9cb /Lists/lists.b
parent0283ccf588a5243b2a992d3d726c2f1344c5438a (diff)
add lists exampleHEADmaster
Diffstat (limited to 'Lists/lists.b')
-rw-r--r--Lists/lists.b38
1 files changed, 33 insertions, 5 deletions
diff --git a/Lists/lists.b b/Lists/lists.b
index 0837c8a..924c05e 100644
--- a/Lists/lists.b
+++ b/Lists/lists.b
@@ -3,19 +3,47 @@ implement Lists;
include "sys.m";
include "draw.m";
-include "arg.m";
-
sys: Sys;
print: import sys;
Lists: module {
- init: fn(nil: ref Draw->Context, argv: list of string);
+ init: fn(nil: ref Draw->Context, nil: list of string);
};
-init(nil: ref Draw->Context, argv: list of string) {
+init(nil: ref Draw->Context, nil: list of string) {
sys = load Sys Sys->PATH;
-
+ names: list of string;
+ ages: list of int;
+ persons: list of (string, int);
+
+ print("Lens: %d, %d, %d\n", len names, len ages, len persons);
+
+ names = "Spike" :: names;
+ ages = 27 :: ages;
+
+ names = "Ed" :: "Jet" :: names;
+ ages = 13 :: 36 :: ages;
+
+ print("Lens: %d, %d, %d\n", len names, len ages, len persons);
+
+ n := names;
+ a := ages;
+
+ while(n != nil && a != nil) {
+ persons = (hd n, hd a) :: persons;
+ n = tl n;
+ a = tl a;
+ }
+
+ print("Persons:\n");
+ for(; persons != nil; persons = tl persons) {
+ (name, age) := hd persons;
+ print("%s: %d\n", name, age);
+ }
+
+ print("Tmp lens: %d, %d\n", len n, len a);
+ print("Lens: %d, %d, %d\n", len names, len ages, len persons);
exit;
}