Mercurial > repos > rhope
view functional.rhope @ 88:f69987c58fa8
Merge
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Fri, 30 Jul 2010 19:52:54 -0400 |
parents | 6d41b71f1b77 |
children | e73a93fb5de1 |
line wrap: on
line source
_Fold[list,index,current,worker:out] { newval <- [worker]Call[current, [list]Index[index], index] [list]Next[index] { out <- _Fold[list, ~, newval, worker] }{ out <- Val[newval] } } Fold[worker,start,list:out] { [list]First { out <- _Fold[list, ~, start, worker] }{ out <- start } } _Map[list,worker,cur:out] { val <- [list]Index[cur] nlist <- [list]Set[cur, [worker]Call[val, cur]] [nlist]Next[cur] { out <- _Map[nlist, worker, ~] }{ out <- Val[nlist] } } Map[list,worker:out] { [list]First { out <- _Map[list,worker,~] }{ out <- list } } _Find[list,pred,cur:loc,not found] { val <- [list]Index[cur] If[[pred]Call[val]] { loc <- cur }{ ,not found <- [list]Next[cur] { loc,not found <- _Find[list,pred,~] } } } Find[list,pred:loc,not found] { ,not found <- [list]First { loc <- _Find[list,pred,~] } } _Filter[list,pred,cur,dest:out] { val <- [list]Index[cur] If[[pred]Call[val,cur]] { ndest <- [dest]Append[val] }{ ndest <- dest } [list]Next[cur] { out <- _Filter[list,pred,~,ndest] }{ out <- Val[ndest] } } Filter[list,pred:out] { [list]First { out <- _Filter[list,pred,~, List[]] }{ out <- list } }