Figuring out how to tell what type ghci is defaulting to was an interesting exercise.  The sum [] trick seemed cool, so I tried a variant:

Prelude> let f xs = const xs $ show xs
Prelude> f []
[]
Prelude> :t it
it :: [()]

  -- ryan


On Thu, Jun 30, 2011 at 6:44 PM, Ivan Lazar Miljenovic <ivan.miljenovic@gmail.com> wrote:
On 1 July 2011 11:35, Brent Yorgey <byorgey@seas.upenn.edu> wrote:
> On Fri, Jul 01, 2011 at 09:05:05AM +1000, Ivan Lazar Miljenovic wrote:
>> On 1 July 2011 08:58, Joshua Ball <joshbball@gmail.com> wrote:
>> > GHCi seems to be clever about some things:
>> >
>> > If I try to print the empty list in ghci, I encounter no problems:
>> >
>> > Prelude> []
>> > []
>> > Prelude> show []
>> > "[]"
>> > Prelude> print []
>> > []
>> >
>> > Even though the type of the list is clearly unknown, it must be
>> > picking SOME type. (why does it print [] instead of "")?
>>
>> Type defaulting: if you don't specify a type, then ghci makes it
>> [Integer].
>
> In this case I'm pretty sure it is [()] since there is only a Show
> constraint.  If there were a Num constraint it would pick
> Integer.

Yeah, I forgot about ()

--
Ivan Lazar Miljenovic
Ivan.Miljenovic@gmail.com
IvanMiljenovic.wordpress.com

_______________________________________________