
It'd seem that (at least the online version of) Hoogle is totally broken and useless. See, for example, the output when looking for: Monad m => m a -> (a -> m b) -> m b (i.e. (>>=)'s type) over at: http://haskell.org/hoogle/?q=Monad+m+%3D>+m+a+->+(a+->+m+b)+->+m+b Data.Generics.Sche... everywhere :: (a -> a) -> a -> a Data.Generics.Sche... everywhere' :: (a -> a) -> a -> a Prelude. ($) :: (a -> b) -> a -> b Prelude. ($!) :: (a -> b) -> a -> b Data.Function. ($) :: (a -> b) -> a -> b Prelude. maybe :: b -> (a -> b) -> Maybe a -> b Data.Maybe. maybe :: b -> (a -> b) -> Maybe a -> b ... and so on. (>>=) isn't there at all!?

On Sat, Jun 14, 2008 at 9:10 AM, Richard
It'd seem that (at least the online version of) Hoogle is totally broken and useless. See, for example, the output when looking for: Monad m => m a -> (a -> m b) -> m b (i.e. (>>=)'s type) over at: http://haskell.org/hoogle/?q=Monad+m+%3D>+m+a+->+(a+->+m+b)+->+m+b
Data.Generics.Sche... everywhere :: (a -> a) -> a -> a Data.Generics.Sche... everywhere' :: (a -> a) -> a -> a Prelude. ($) :: (a -> b) -> a -> b Prelude. ($!) :: (a -> b) -> a -> b Data.Function. ($) :: (a -> b) -> a -> b Prelude. maybe :: b -> (a -> b) -> Maybe a -> b Data.Maybe. maybe :: b -> (a -> b) -> Maybe a -> b
... and so on. (>>=) isn't there at all!?
It's well-known that the current version of Hoogle doesn't deal well with type constructors, like the 'm' in your type above. However, you're (we're all) in luck, since Neil Mitchell is working on a new version of Hoogle for GSoC as we speak! =) -Brent

Am Samstag, 14. Juni 2008 15:10 schrieb Richard:
It'd seem that (at least the online version of) Hoogle is totally broken and useless. See, for example, the output when looking for: Monad m => m a -> (a -> m b) -> m b (i.e. (>>=)'s type) over at: http://haskell.org/hoogle/?q=Monad+m+%3D>+m+a+->+(a+->+m+b)+->+m+b
Data.Generics.Sche... everywhere :: (a -> a) -> a -> a Data.Generics.Sche... everywhere' :: (a -> a) -> a -> a Prelude. ($) :: (a -> b) -> a -> b Prelude. ($!) :: (a -> b) -> a -> b Data.Function. ($) :: (a -> b) -> a -> b Prelude. maybe :: b -> (a -> b) -> Maybe a -> b Data.Maybe. maybe :: b -> (a -> b) -> Maybe a -> b
... and so on. (>>=) isn't there at all!?
It's near the bottom of page 4 of the results. hoogle doesn't do an exact search, it reports all "close enough matches", which sometimes is less useful than other times. One great thing about hoogle's notion of 'close enough' is that it includes permutations of parameters, one less good thing is that it's not particularly faithful to type constructors. I think Neil's in the process of writing hoogle 4, which supposedly will be better with such things. However, in spite of hoogle's quirks and shortcomings, if you get used to them, it's a very useful tool already. Cheers, Daniel

Hi Richard,
It'd seem that (at least the online version of) Hoogle is totally broken and useless.
To finish your sentance: "when searching for types with higher-kinded type classes". In practice, this usually means Monad and occasionally Functor.
... and so on. (>>=) isn't there at all!?
It is, but its on page 4. That's clearly a bug, and a well known one. I am currently writing Hoogle 4, details can be found here: http://neilmitchell.blogspot.com/2008/04/summer-of-code-2008.html To quote from that page: <quote> # Removal of all bugs Hoogle 3 has a number of embarrassing bugs, some of which are not easily fixed. The nastiest of these is to do with monads, which are horribly mistreated. Since I now know the underlying issues which have caused a problem with Hoogle 3, things like higher-kinded type classes can be solved in a more principled manner. </quote> So try again in 3 months, and the issue will be gone :-) Thanks Neil
participants (4)
-
Brent Yorgey
-
Daniel Fischer
-
Neil Mitchell
-
Richard