LINUX.ORG.RU

История изменений

Исправление hateyoufeel, (текущая версия) :

Тогда почему такое не прокатывает? Я понимаю, что можно подключить FlexibleContexts, но тогда почему первый вариант работает без этого?

Prelude> let x = [1,2] :: (Num [t], Num t) => [t]

<interactive>:16:18:
    Non type-variable argument in the constraint: Num [t]
    (Use FlexibleContexts to permit this)
    In an expression type signature: (Num [t], Num t) => [t]
    In the expression: [1, 2] :: (Num [t], Num t) => [t]
    In an equation for ‘x’: x = [1, 2] :: (Num [t], Num t) => [t]

На #haskell тоже через подобный пример с инстансом объясняли.

Исходная версия hateyoufeel, :

Тогда почему такое не прокатывает? Я понимаю, что можно подключить FlexibleContexts, но тогда почему первый вариант работает без этого?

Prelude> let x = [1,2] :: (Num [t], Num t) => [t]

<interactive>:16:18:
    Non type-variable argument in the constraint: Num [t]
    (Use FlexibleContexts to permit this)
    In an expression type signature: (Num [t], Num t) => [t]
    In the expression: [1, 2] :: (Num [t], Num t) => [t]
    In an equation for ‘x’: x = [1, 2] :: (Num [t], Num t) => [t]

На #haskell тоже через подобный пример объясняли.