Why no findM ? simple Cat revisited

Ahn Ki-yung haskell-cafe@haskell.org
Wed, 20 Nov 2002 18:54:33 +0900

Simple Cat (revisitied)


import IO

findM f [] = return Nothing
findM f (x:xs) = do { v <- x; if f v then return (Just v) else findM f xs }

isLeft (Left _) = True
isLeft _ = False

main = findM (isLeft) (hCat stdin) where hCat h = try (hGetLine h) : hCat h


This is my answer for the question of my own,

which is posted a couple

There are mapM, filterM in the Haskell 98 Standard Library.

But why no findM there ?

As you can see from simple cat, it seems quite useful.

I think fildM should be added to the module Monad.

Ahn Ki-yung