Here's one solution:
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 43then Trueelseif (xs !! i) == (xs !! (j-1))then isPalindrome' (i+1) (j-1)else FalseBut, 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 FalseIs there any way to make the local definition of isPalindrome' more readable?Any help in understanding this would be appreciatedThanks in advance,M;
_______________________________________________
Beginners mailing list
Beginners@haskell.org
http://www.haskell.org/mailman/listinfo/beginners