about summary refs log tree commit diff stats
path: root/html/030container.cc.html
Commit message (Expand)AuthorAgeFilesLines
* 4243Kartik Agaram2018-05-121-12/+12
* 4239Kartik Agaram2018-05-081-9/+9
* 4228Kartik K. Agaram2018-03-151-16/+16
* 4199Kartik K. Agaram2018-01-251-158/+157
* 4162Kartik K. Agaram2017-12-221-4/+4
* 4161Kartik K. Agaram2017-12-151-6/+6
* 4155Kartik K. Agaram2017-12-071-43/+43
* 4134 - 'input' = 'ingredient'Kartik K. Agaram2017-12-031-10/+10
* 4109Kartik K. Agaram2017-11-051-8/+8
* 4102Kartik K. Agaram2017-11-011-14/+14
* 4003Kartik K. Agaram2017-09-231-6/+6
* 3971Kartik K. Agaram2017-08-191-20/+20
* 3927Kartik K. Agaram2017-06-191-660/+672
* 3900Kartik K. Agaram2017-06-021-4/+4
* 3897 - various updates to documentationKartik K. Agaram2017-05-291-39/+39
* 3895Kartik K. Agaram2017-05-291-325/+326
* 3877Kartik K. Agaram2017-05-261-7/+7
* 3845Kartik K. Agaram2017-05-061-4/+4
* 3764 - better colors for cross-linksKartik K. Agaram2017-03-081-4/+5
* 3761Kartik K. Agaram2017-03-071-146/+147
* 3750Kartik K. Agaram2017-03-021-41/+41
* 3749Kartik K. Agaram2017-03-021-41/+41
* 3746Kartik K. Agaram2017-02-071-19/+19
* 3725Kartik K. Agaram2016-12-271-519/+518
* 3716Kartik K. Agaram2016-12-261-0/+2
* 3713 - cross-link calls with definitions in htmlKartik K. Agaram2016-12-261-179/+179
* 3710Kartik K. Agaram2016-12-261-903/+903
* 3709 - line numbers in htmlKartik K. Agaram2016-12-261-905/+929
* 3707Kartik K. Agaram2016-12-121-5/+10
* 3679Kartik K. Agaram2016-11-171-2/+2
* 3667Kartik K. Agaram2016-11-111-108/+42
* 3642Kartik K. Agaram2016-11-061-28/+28
* 3561Kartik K. Agaram2016-10-221-1/+1
* 3558Kartik K. Agaram2016-10-221-3/+3
* 3544Kartik K. Agaram2016-10-221-1/+1
* 3543Kartik K. Agaram2016-10-221-1/+11
* 3524Kartik K. Agaram2016-10-201-19/+24
* 3431Kartik K. Agaram2016-09-301-45/+47
* 3395Kartik K. Agaram2016-09-171-68/+83
* 3355Kartik K. Agaram2016-09-151-21/+48
* 3315Kartik K. Agaram2016-09-101-68/+234
* 3158Kartik K. Agaram2016-07-271-10/+16
* 3117Kartik K. Agaram2016-07-201-2/+0
* 3102Kartik K. Agaram2016-07-051-4/+19
* 2996Kartik K. Agaram2016-05-211-289/+232
* 2875Kartik K. Agaram2016-04-271-1/+1
* 2866Kartik K. Agaram2016-04-251-79/+71
* 2812Kartik K. Agaram2016-03-271-104/+84
* 2745Kartik K. Agaram2016-03-091-1/+1
* 2744Kartik K. Agaram2016-03-091-4/+4
ass="w"> leaves, in the same # order from left to right) container tree:_elem [ val:_elem left:&:tree:_elem right:&:tree:_elem ] def main [ local-scope # x: ((a b) c) # y: (a (b c)) a:&:tree:num <- new-tree 3 b:&:tree:num <- new-tree 4 c:&:tree:num <- new-tree 5 x1:&:tree:num <- new-tree a, b x:&:tree:num <- new-tree x1, c y1:&:tree:num <- new-tree b, c y:&:tree:num <- new-tree a, y1 result:bool <- same-fringe x, y $print result 10/newline ] def same-fringe a:&:tree:_elem, b:&:tree:_elem -> result:bool [ local-scope load-inputs k1:continuation <- call-with-continuation-mark 100/mark, process, a k2:continuation <- call-with-continuation-mark 100/mark, process, b { k1, x:_elem, a-done?:bool <- call k1 k2, y:_elem, b-done?:bool <- call k2 break-if a-done? break-if b-done? match?:bool <- equal x, y return-unless match?, false loop } result <- and a-done?, b-done? ] # harness around traversal def process t:&:tree:_elem [ local-scope load-inputs return-continuation-until-mark 100/mark # initial traverse t zero-val:&:_elem <- new _elem:type return-continuation-until-mark 100/mark, *zero-val, true/done # final assert false, [continuation called past done] ] # core traversal def traverse t:&:tree:_elem [ local-scope load-inputs return-unless t l:&:tree:_elem <- get *t, left:offset traverse l r:&:tree:_elem <- get *t, right:offset traverse r return-if l return-if r # leaf v:_elem <- get *t, val:offset return-continuation-until-mark 100/mark, v, false/not-done ] # details def new-tree x:_elem -> result:&:tree:_elem [ local-scope load-inputs result <- new {(tree _elem): type} put *result, val:offset, x ] def new-tree l:&:tree:_elem, r:&:tree:_elem -> result:&:tree:_elem [ local-scope load-inputs result <- new {(tree _elem): type} put *result, left:offset, l put *result, right:offset, r ]