[Haskell-cafe] strange error message

Erik Hesselink hesselink at gmail.com
Thu Mar 27 12:16:03 UTC 2014


Could you create a code snippet that reproduces the error?

Erik

On Thu, Mar 27, 2014 at 1:09 PM, Semen Trygubenko / Семен Тригубенко
<semen at trygub.com> wrote:
> Hi Ivan,
>
> On Thu, Mar 27, 2014 at 11:28:33AM +0000, Ivan Perez wrote:
>> What is the type of head?
>> What is the type of length?
>> What is the type of length.head?
>> What is the type of r?
>
> Prelude> :t head
> head :: [a] -> a
> Prelude> :t length
> length :: [a] -> Int
> Prelude> :t (length . head)
> (length . head) :: [[a]] -> Int
> Prelude>
>
> r is of type Int.
>
> [Apologies — I thought the above is deducable from the error message I've included (below).]
>
> Clearly, this is a type error as Int is passed in where [[a]] is expected.
> However, my question is relating to the middle bit of the error message,
> namely:
>
>     (The function `length . head' is applied to one argument,
>     but its type `[[a2]] -> Int' has only one)
>
> Many thanks,
> S.
>
>
>
>
>> On 27 March 2014 02:36, Semen Trygubenko / Семен Тригубенко <
>> semen at trygub.com> wrote:
>>
>> > Dear Haskell-Cafe,
>> >
>> > Every now and then I get error messages when compiling Haskell code :).
>> > Sometimes of the sort:
>> >
>> > test.hs:10:15:
>> >     Couldn't match type `[[a2]]' with `Int'
>> >     Expected type: Int -> Int
>> >       Actual type: [[a2]] -> Int
>> >     The function `length . head' is applied to one argument,
>> >     but its type `[[a2]] -> Int' has only one
>> >     In the first argument of `(==)', namely `(length . head) r'
>> >     In the expression: (length . head) r == 0
>> >
>> > Is the middle part of the error message
>> >
>> > (The function `length . head' is applied to one argument,
>> > but its type `[[a2]] -> Int' has only one)
>> >
>> > expected to be confusing like that sometimes?
>> >
>> > The line in question, FWIW, is
>> >
>> > Right r -> if (length . head) r == 0
>> >
>> > It appears as one of the two entries in a case statement, pattern matching
>> > on Right constructor.
>> >
>> > Many thanks,
>> > S.
>> >
>> >
>> >
>> > --
>> > Семен Тригубенко http://trygub.com
>> >
>> > _______________________________________________
>> > Haskell-Cafe mailing list
>> > Haskell-Cafe at haskell.org
>> > http://www.haskell.org/mailman/listinfo/haskell-cafe
>> >
>> >
>
> --
> Семен Тригубенко http://trygub.com
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>


More information about the Haskell-Cafe mailing list