Exploring Types and Definitions
Let's take the standard definition of a left-to-right reduction:
foldl op acc  = acc foldl op acc (x:xs) = foldl op (acc `op` x) xs
What is its type? In Haskell for Mac, that question is easily answered. Either three finger tap the function name
foldl or press ⌘I while the cursor is on the function name. Voilà! The system presents you with the inferred type.
We can copy that type from the popover and paste it into our program.
The three finger tap and ⌘I can be used in the module editor as well as the playground editor. And the look up can do more than present types. Given a data constructor, we get the context of its definition.
And for a type constructor, we get its definition as well as its class instances.
In addition to querying identifiers, we can use the same gesture and keyboard shortcut to infer the most general type of an expression or the kind of a type term.
In this manner, we can easily explore the types of expressions and kinds of type terms as long as they do not include variables defined in local scope (such as function parameters). And for anybody exploring advanced type level programming with type families, Haskell for Mac normalises type families as well — this makes tracking down the cause of type errors in that situation much easier.