преобразование плавающего типа в плавающий тип в haskell

#haskell

#haskell

Вопрос:

 doubles :: Floating -> Floating
doubles  =  (0.1   1.1) - 1.2
  

я получаю эту ошибку в Haskell

Expecting one more argument to ‘FloatingExpected a type, but ‘Floating’ has kind ‘* -> ConstraintIn the type signature: doubles :: Floating -> Floating
   |
32 | doubles :: Floating -> Floating 
   |                        ^^^^^^^^
  

Комментарии:

1. Floating это не тип, Floating это класс типов, «группа» типов. Таким образом, вы должны добавить ограничение типа.

Ответ №1:

Floating это не тип, Floating это класс типов, например, «группа» Float типов и Double являются «членами» этого класса типов. Таким образом, вы должны добавить ограничение типа:

 doubles :: Floating a => a
doubles = (0.1   1.1) - 1.2  

Таким образом, это означает, что для каждого типа a , который a является членом Floating класса типов, эта функция определена.

Тип Floating a => a не Floating => a -> a является, поскольку нет ввода: doubles является константой.