[Haskell-beginners] Indentation of local functions

Andrew Wagner wagner.andrew at gmail.com
Mon Feb 16 10:58:36 EST 2009


Here's one solution:isPalindrome xs =
   isPalindrome' 0 (length xs)
   where isPalindrome' i j = if i == j then True else check i j
                 check i j = if (xs !! i) == (xs !! (j-1)) then recurse i j
else False
                 recurse i j = isPalindrome' (i+1) (j-1)


On Mon, Feb 16, 2009 at 10:32 AM, Miguel Pignatelli <miguel.pignatelli at uv.es
> wrote:

> Hi all,
> This is my first post in this forum, I'm pretty new to Haskell (although I
> have some previous experience in functional programming with OCaml).
>
> I'm trying to write the typical function that determines if a list is a
> palindrome.
> The typical answer would be something like:
>
> isPalindrome xs = xs == (reverse xs)
>
> But I find this pretty inefficient (duplication of the list and double of
> needed comparisons).
> So I tried my own version using just indexes:
>
> isPalindrome xs =
>    isPalindrome' 0 (length xs)
>    where isPalindrome' i j =
>             if i == j   -- line 43
>             then True
>             else
>              if (xs !! i) == (xs !! (j-1))
>              then isPalindrome' (i+1) (j-1)
>              else False
>
> But, when trying to load this in ghci it throws the following error:
>
> xxx.hs:43:12: parse error (possibly incorrect indentation)
> Failed, modules loaded: none.
> (Line 43 is marked in the code)
>
> I seems that the definition of isPalindrome' must be in one line. So,
> this works as expected:
>
> isPalindrome xs =
>    isPalindrome' 0 (length xs)
>      where isPalindrome' i j = if i == j then True else if (xs !! i) ==
> (xs !! (j-1)) then isPalindrome' (i+1) (j-1) else False
>
> Is there any way to make the local definition of isPalindrome' more
> readable?
>
> Any help in understanding this would be appreciated
>
> Thanks in advance,
>
> M;
>
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/beginners/attachments/20090216/f2a8e955/attachment.htm


More information about the Beginners mailing list