Size: a a a

2020 August 02

DB

Danil Berestov in Haskell
в хаскеле какая-то ужасная иерархия чисел
источник

JS

Jerzy Syrowiecki in Haskell
Danil Berestov
Так это же Fractional, а не Floating((
подкласс же
источник

JS

Jerzy Syrowiecki in Haskell
Danil Berestov
в хаскеле какая-то ужасная иерархия чисел
она вполне соответствует реальности
источник

DB

Danil Berestov in Haskell
Jerzy Syrowiecki
подкласс же
Оно вроде сработало, но я не понимаю, как. floating гарантирует fractional. но не наоборот же
источник

AA

A64m AL256m qn<co... in Haskell
хотя весь модерн хаскель это преувеличение, конечно, те же линзы мало затронуты австралийской программой и оставайся хаскель на рельсах олегинга - мало поменялись бы
источник

JS

Jerzy Syrowiecki in Haskell
Danil Berestov
Оно вроде сработало, но я не понимаю, как. floating гарантирует fractional. но не наоборот же
каждый Floating является частным случаем Fractional. если функция может работать с любым Fractional, то в том числе может и с любым Floating
источник

DB

Danil Berestov in Haskell
Но мне там нужны были именно свойства Floating (sqrt, **)
источник

DB

Danil Berestov in Haskell
То есть я потребовал всего лишь Fractional, но получил Floating
источник

DB

Danil Berestov in Haskell
Бесплатно)
источник

YS

Yan Shkurinskiy in Haskell
Danil Berestov
Бесплатно)
Надо говорить "фри"!
источник

DB

Danil Berestov in Haskell
Извините!
источник

DB

Danil Berestov in Haskell
Free Floating
источник

YS

Yan Shkurinskiy in Haskell
Вот, то то же, это по-хаскельному
источник

JS

Jerzy Syrowiecki in Haskell
Danil Berestov
Но мне там нужны были именно свойства Floating (sqrt, **)
что не так?
источник

DB

Danil Berestov in Haskell
Ну как я это вижу: есть типа Fractional, есть Floating. Floating < Fractional. То есть апнуться к более общему типу мы можем (из Floating до Fractional). Но я ведь функцией realToFrac получаю Fractional. Как я из более общего типа могу получить свойства более узкого — неясно
источник

АХ

Алексей Худяков... in Haskell
Jerzy Syrowiecki
она вполне соответствует реальности
Нет. Не соответсвует. realToFrac, например, сломан:
> realToFrac (1/0 :: Float) :: Double 
3.402823669209385e38
источник

DB

Danil Berestov in Haskell
Алексей Худяков
Нет. Не соответсвует. realToFrac, например, сломан:
> realToFrac (1/0 :: Float) :: Double 
3.402823669209385e38
э, это как вообще(
источник

АХ

Алексей Худяков... in Haskell
Очевидно! realToFrac работает через Rational, а трансфинитные значения в нём нормально непредставимы
источник

JS

Jerzy Syrowiecki in Haskell
Danil Berestov
Ну как я это вижу: есть типа Fractional, есть Floating. Floating < Fractional. То есть апнуться к более общему типу мы можем (из Floating до Fractional). Но я ведь функцией realToFrac получаю Fractional. Как я из более общего типа могу получить свойства более узкого — неясно
class Fractional a => Floating a

или на привычном языке математики значок будет смотреть наоборот

∀ a. Floating a => Fractional a
Floating ⊆ Fractional

но потом мы говорим не про типы, а про функцию, параметризованную этими типами, например,

realToFrac pi :: ∀ (b :: Type). Fractional b => b

она принимает параметр (b :: Type). она может принять Fractional, следовательно, может принять что угодно внутри Fractional, например, Floating
источник

JS

Jerzy Syrowiecki in Haskell
Алексей Худяков
Нет. Не соответсвует. realToFrac, например, сломан:
> realToFrac (1/0 :: Float) :: Double 
3.402823669209385e38
не полностью, а вполне. достаточно для практического применения
источник