:: Read a => String -> Maybe a package:lambdabot-core

readM behaves like read, but catches failure in a monad. this allocates a 20-30 M on startup...