[Haskell-cafe] Is this haskelly enough?

James Hunt james at j-hunt.co.uk
Tue Jul 17 16:26:21 EDT 2007


Hi,

As a struggling newbie, I've started to try various exercises in order 
to improve. I decided to try the latest Ruby Quiz 
(http://www.rubyquiz.com/quiz131.html) in Haskell. Would someone be kind 
enough to cast their eye over my code? I get the feeling there's a 
better way of doing it!

subarrays :: [a] -> [[a]]
subarrays [] = [[]]
subarrays xs = (sa xs) ++ subarrays (tail xs)
  where sa xs = [ys | n <- [1..length xs], ys <- [(take n xs)]]

maxsubarrays :: [Integer] -> [Integer]
maxsubarrays xs = msa [] (subarrays xs)
  where
    msa m [] = m
    msa m (x:xs)
      | sum x > sum m = msa x xs
      | otherwise     = msa m xs

--for testing: should return [2, 5, -1, 3]
main = maxsubarrays [-1, 2, 5, -1, 3, -2, 1]

I've read tutorials about the syntax of Haskell, but I can't seem to 
find any that teach you how to really "think" in a Haskell way. Is there 
anything (books, online tutorials, exercises) that anyone could recommend?

Thanks,
James


More information about the Haskell-Cafe mailing list