[ stack ] is maxseq ( --> s ) [ stack ] is maxsum ( --> s ) [ [] maxseq put 0 maxsum put dup dup size times [ [] 0 rot witheach [ rot over join unrot + dup maxsum share > if [ dup maxsum replace over maxseq replace ] ] 2drop behead drop dup ] 2drop maxsum take maxseq take ] is maxsubseqsum ( [ --> n [ ) ' [ [ 1 2 3 4 5 -8 -9 -20 40 25 -5 ] [ -1 -2 3 5 6 -2 -1 4 -4 2 -1 ] [ -1 -2 -3 -4 -5 ] [ ] ] witheach [ dup say "Sequence: " echo cr maxsubseqsum say "Subsequence: " echo cr say "Sum: " echo cr cr ]