LINUX.ORG.RU

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

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

Я сказал здесь нету «неявного приведения типов», значит нету.

Через [Integer] ++ [Num] и fromInteger получаем [Float]

Я не знаю ни одного способа как разумным способом интерпретировать эту фразу.

Возможно ты имеешь ввиду что числовые литераты являются переопредлененными и к ним примеряется fromIntegral или fromRational но это не явное или неяыное приведение типа т.к. в программе исходного типа не будет, только конечный, в твоём примере выше создастся список из только Floating a=> a, никаких Integer там не будет. //заставить там быть Rational еще реально, но даже тут неявного приведения нет.

Чтобы продемонстрировать его нужно написать какое-нибудь a `operation` b и где в a и b разные типы, в примере выше тип одинаковый.

А вот что говорит Haskell report

The syntax of numeric literals is given in Section 2.5. An integer literal represents the application of the function fromInteger to the appropriate value of type Integer. Similarly, a floating literal stands for an application of fromRational to a value of type Rational (that is, Ratio Integer). Given the typings: fromInteger :: (Num a) => Integer -> a fromRational :: (Fractional a) => Rational -> a integer and floating literals have the typings (Num a) => a and (Fractional a) => a, respectively. Numeric literals are defined in this indirect way so that they may be interpreted as values of any appropriate numeric type. See Section 4.3.4 for a discussion of overloading ambiguity.

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

Я сказал здесь нету «неявного приведения типов, значит нету», значит нету.

Через [Integer] ++ [Num] и fromInteger получаем [Float]

Я не знаю ни одного способа как разумным способом интерпретировать эту фразу.

Возможно ты имеешь ввиду что числовые литераты являются переопредлененными и к ним примеряется fromIntegral или fromRational но это не явное или неяыное приведение типа т.к. в программе исходного типа не будет, только конечный, в твоём примере выше создастся список из только Floating a=> a, никаких Integer там не будет. //заставить там быть Rational еще реально, но даже тут неявного приведения нет.

Чтобы продемонстрировать его нужно написать какое-нибудь a `operation` b и где в a и b разные типы, в примере выше тип одинаковый.

А вот что говорит Haskell report

The syntax of numeric literals is given in Section 2.5. An integer literal represents the application of the function fromInteger to the appropriate value of type Integer. Similarly, a floating literal stands for an application of fromRational to a value of type Rational (that is, Ratio Integer). Given the typings: fromInteger :: (Num a) => Integer -> a fromRational :: (Fractional a) => Rational -> a integer and floating literals have the typings (Num a) => a and (Fractional a) => a, respectively. Numeric literals are defined in this indirect way so that they may be interpreted as values of any appropriate numeric type. See Section 4.3.4 for a discussion of overloading ambiguity.