ref: 87e325f2c9792ece2583761ca26c57318a698be9
dir: /Lists/lists.b/
implement Lists; include "sys.m"; include "draw.m"; sys: Sys; print: import sys; Lists: module { init: fn(nil: ref Draw->Context, nil: 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; }