Scheme版も書いてみました.

(define (mss xs)
 (define (pmss xs p q)
  (if (null? xs) q
    (let ((pp (+ p (car xs))))
     (pmss (cdr xs) (max pp 0) (max pp q)))))
 (let ((m (apply max xs)))
  (if (< m 0) m
    (pmss xs 0 0))))

たぶんHaskellだともっとスマートにかけると思います.
それにしても全角スペースをいれてインデントするのは面倒ですね.