diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2016-09-17 15:01:51 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2016-09-17 15:01:51 -0700 |
commit | f344b250f6f062a1a1902bf69b23ebf9b565de0e (patch) | |
tree | 199bd32a9aee198d5028b1c21b83d2cf0944b2b6 /html/070table.mu.html | |
parent | 897ae8c1855f830d8819759ea327d147f28a09bf (diff) | |
download | mu-f344b250f6f062a1a1902bf69b23ebf9b565de0e.tar.gz |
3395
Diffstat (limited to 'html/070table.mu.html')
-rw-r--r-- | html/070table.mu.html | 44 |
1 files changed, 22 insertions, 22 deletions
diff --git a/html/070table.mu.html b/html/070table.mu.html index 6292dd74..af164bcd 100644 --- a/html/070table.mu.html +++ b/html/070table.mu.html @@ -38,9 +38,9 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color <span class="muScenario">scenario</span> table-read-write [ run [ <span class="Constant">local-scope</span> - tab:address:table:number:number<span class="Special"> <- </span>new-table <span class="Constant">30</span> + tab:&:table:num:num<span class="Special"> <- </span>new-table <span class="Constant">30</span> put-index tab, <span class="Constant">12</span>, <span class="Constant">34</span> - <span class="Constant">1</span>:number/<span class="Special">raw <- </span>index tab, <span class="Constant">12</span> + <span class="Constant">1</span>:num/<span class="Special">raw <- </span>index tab, <span class="Constant">12</span> ] memory-should-contain [ <span class="Constant">1</span><span class="Special"> <- </span><span class="Constant">34</span> @@ -53,7 +53,7 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color key:text<span class="Special"> <- </span>new <span class="Constant">[abc def]</span> <span class="Delimiter">{</span>tab: (address table text number)<span class="Delimiter">}</span><span class="Special"> <- </span>new-table <span class="Constant">30</span> put-index tab, key, <span class="Constant">34</span> - <span class="Constant">1</span>:number/<span class="Special">raw <- </span>index tab, key + <span class="Constant">1</span>:num/<span class="Special">raw <- </span>index tab, key ] memory-should-contain [ <span class="Constant">1</span><span class="Special"> <- </span><span class="Constant">34</span> @@ -61,61 +61,61 @@ body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color ] <span class="muData">container</span> table:_key:_value [ - length:number - capacity:number - data:address:array:table_row:_key:_value + length:num + capacity:num + data:&:@:table_row:_key:_value ] <span class="muData">container</span> table_row:_key:_value [ - occupied?:boolean + occupied?:bool key:_key value:_value ] -<span class="muRecipe">def</span> new-table capacity:number<span class="muRecipe"> -> </span>result:address:table:_key:_value [ +<span class="muRecipe">def</span> new-table capacity:num<span class="muRecipe"> -> </span>result:&:table:_key:_value [ <span class="Constant">local-scope</span> <span class="Constant">load-ingredients</span> result<span class="Special"> <- </span>new <span class="Delimiter">{</span>(table _key _value): type<span class="Delimiter">}</span> - data:address:array:table_row:_key:_value<span class="Special"> <- </span>new <span class="Delimiter">{</span>(table_row _key _value): type<span class="Delimiter">}</span>, capacity + data:&:@:table_row:_key:_value<span class="Special"> <- </span>new <span class="Delimiter">{</span>(table_row _key _value): type<span class="Delimiter">}</span>, capacity *result<span class="Special"> <- </span>merge <span class="Constant">0/length</span>, capacity, data ] -<span class="muRecipe">def</span> put-index table:address:table:_key:_value, key:_key, value:_value<span class="muRecipe"> -> </span>table:address:table:_key:_value [ +<span class="muRecipe">def</span> put-index table:&:table:_key:_value, key:_key, value:_value<span class="muRecipe"> -> </span>table:&:table:_key:_value [ <span class="Constant">local-scope</span> <span class="Constant">load-ingredients</span> - hash:number<span class="Special"> <- </span>hash key + hash:num<span class="Special"> <- </span>hash key hash<span class="Special"> <- </span>abs hash - capacity:number<span class="Special"> <- </span>get *table, <span class="Constant">capacity:offset</span> + capacity:num<span class="Special"> <- </span>get *table, <span class="Constant">capacity:offset</span> _, hash<span class="Special"> <- </span>divide-with-remainder hash, capacity hash<span class="Special"> <- </span>abs hash <span class="Comment"># in case hash overflows into a negative integer</span> - table-data:address:array:table_row:_key:_value<span class="Special"> <- </span>get *table, <span class="Constant">data:offset</span> + table-data:&:@:table_row:_key:_value<span class="Special"> <- </span>get *table, <span class="Constant">data:offset</span> x:table_row:_key:_value<span class="Special"> <- </span>index *table-data, hash - occupied?:boolean<span class="Special"> <- </span>get x, <span class="Constant">occupied?:offset</span> - not-occupied?:boolean<span class="Special"> <- </span>not occupied?:boolean + occupied?:bool<span class="Special"> <- </span>get x, <span class="Constant">occupied?:offset</span> + not-occupied?:bool<span class="Special"> <- </span>not occupied?:bool assert not-occupied?, <span class="Constant">[can't handle collisions yet]</span> new-row:table_row:_key:_value<span class="Special"> <- </span>merge <span class="Constant">1/true</span>, key, value *table-data<span class="Special"> <- </span>put-index *table-data, hash, new-row ] -<span class="muRecipe">def</span> abs n:number<span class="muRecipe"> -> </span>result:number [ +<span class="muRecipe">def</span> abs n:num<span class="muRecipe"> -> </span>result:num [ <span class="Constant">local-scope</span> <span class="Constant">load-ingredients</span> - positive?:boolean<span class="Special"> <- </span>greater-or-equal n, <span class="Constant">0</span> + positive?:bool<span class="Special"> <- </span>greater-or-equal n, <span class="Constant">0</span> <span class="muControl">return-if</span> positive?, n result<span class="Special"> <- </span>multiply n, <span class="Constant">-1</span> ] -<span class="muRecipe">def</span> index table:address:table:_key:_value, key:_key<span class="muRecipe"> -> </span>result:_value [ +<span class="muRecipe">def</span> index table:&:table:_key:_value, key:_key<span class="muRecipe"> -> </span>result:_value [ <span class="Constant">local-scope</span> <span class="Constant">load-ingredients</span> - hash:number<span class="Special"> <- </span>hash key + hash:num<span class="Special"> <- </span>hash key hash<span class="Special"> <- </span>abs hash - capacity:number<span class="Special"> <- </span>get *table, <span class="Constant">capacity:offset</span> + capacity:num<span class="Special"> <- </span>get *table, <span class="Constant">capacity:offset</span> _, hash<span class="Special"> <- </span>divide-with-remainder hash, capacity hash<span class="Special"> <- </span>abs hash <span class="Comment"># in case hash overflows into a negative integer</span> - table-data:address:array:table_row:_key:_value<span class="Special"> <- </span>get *table, <span class="Constant">data:offset</span> + table-data:&:@:table_row:_key:_value<span class="Special"> <- </span>get *table, <span class="Constant">data:offset</span> x:table_row:_key:_value<span class="Special"> <- </span>index *table-data, hash - occupied?:boolean<span class="Special"> <- </span>get x, <span class="Constant">occupied?:offset</span> + occupied?:bool<span class="Special"> <- </span>get x, <span class="Constant">occupied?:offset</span> assert occupied?, <span class="Constant">[can't handle missing elements yet]</span> result<span class="Special"> <- </span>get x, <span class="Constant">value:offset</span> ] |