The 6th of the 99 Haskell questions on wiki.haskell.org presents a monadic way to test whether a list (something of type [a]) is a palindrome:
isPalindromeM :: (Eq a) => [a] -> Bool isPalindromeM = reverse >>= (==) (here reverse :: [c] -> [c] takes a list and outputs a list in backwards order).
The bind operation implies a monad is at play here, but what is this monad?
Since isPalindrome involves lists, my first guess is that the monad is related to the List one, but I don't see how to draw the connection.
flip). So I'd ask the author, why notisPalindromA = (==) <*> reverse?