User loginNavigation 
Can local variables assignments be considered pure functional without monads?Okay, this might seem like an odd question, but is there contention on whether or not a while loop that performs assignment on local function variables is pure functional? For example the following Java code: int process(int[] xs) { int zeros = 0; int sum = 0; int i=0; while (i < xs.Size) { if (xs[i] == 0) zeros++; sum += xs[i]; ++i; } return sum  zeros; } Now I have heard frequently that the above code is considered to have sideeffects because of the local assignments to variables. However, the mapping to purefunctional stackbased code (here shown in Cat) is very straightforward: define process { // top argument = xs 0 // zeros 0 // sum 0 // i [ dig3 // bring xs to top of local stack dupd swap get_at eqz // xs[i] == 0 [[inc] dip3] // inc zeros [] if dupd swap get_at // tmp = xs[i] [bury3] dip // put xs to bottom of local stack swap [add_int] dip // sum += tmp inc // ++i ] [ dig3 count [bury3] dip // tmp = xs.Size dupd lt_int // i < tmp ] while pop // remove i swap sub_int // sumzeros } So, my problem is that I am not sure whether this is old news or new news. Any feedback would be appreciated. By cdiggins at 20080410 17:30  LtU Forum  previous forum topic  next forum topic  other blogs  11562 reads

Browse archives
Active forum topics 
Recent comments
16 weeks 3 days ago
16 weeks 4 days ago
16 weeks 4 days ago
38 weeks 5 days ago
43 weeks 6 hours ago
44 weeks 4 days ago
44 weeks 4 days ago
47 weeks 2 days ago
51 weeks 6 days ago
51 weeks 6 days ago