3995a5eb6a 2010-11-21 kinaba: def fromTo(x, y) 3995a5eb6a 2010-11-21 kinaba: { 3ae09b8cbf 2010-11-24 kinaba: if x > y : {} 3ae09b8cbf 2010-11-24 kinaba: else : {car: x, cdr: fromTo(x+1,y)} 3995a5eb6a 2010-11-21 kinaba: }; 3995a5eb6a 2010-11-21 kinaba: 3995a5eb6a 2010-11-21 kinaba: def length(lst) 3995a5eb6a 2010-11-21 kinaba: { 3ae09b8cbf 2010-11-24 kinaba: case lst 3ae09b8cbf 2010-11-24 kinaba: when {car:_, cdr:x}: length(x)+1 3ae09b8cbf 2010-11-24 kinaba: when _: 0 3995a5eb6a 2010-11-21 kinaba: }; 3995a5eb6a 2010-11-21 kinaba: 3995a5eb6a 2010-11-21 kinaba: def adjSum(lst) 3995a5eb6a 2010-11-21 kinaba: { 3ae09b8cbf 2010-11-24 kinaba: case lst 3ae09b8cbf 2010-11-24 kinaba: when {car:x, cdr:{car: y, cdr:z}} : {car: x+y, cdr: adjSum(z)} 3ae09b8cbf 2010-11-24 kinaba: when {car:x, cdr:{}}: {car: x, cdr: {}} 3ae09b8cbf 2010-11-24 kinaba: when {}: {} 3995a5eb6a 2010-11-21 kinaba: }; 3995a5eb6a 2010-11-21 kinaba: f86026acb8 2010-11-21 kinaba: var xs = fromTo(1,101); 3995a5eb6a 2010-11-21 kinaba: 3995a5eb6a 2010-11-21 kinaba: print( xs ); 3995a5eb6a 2010-11-21 kinaba: print( length(xs) ); 3995a5eb6a 2010-11-21 kinaba: print( adjSum(xs) ); 3995a5eb6a 2010-11-21 kinaba: print( length(adjSum(xs)) );