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  9589 reads

Browse archivesActive forum topics 
Recent comments
5 hours 17 min ago
7 hours 17 min ago
13 hours 11 min ago
1 day 5 hours ago
1 day 14 hours ago
2 days 1 hour ago
2 days 3 hours ago
2 days 3 hours ago
2 days 4 hours ago
2 days 4 hours ago