Size: a a a

2021 June 12

DG

Denis Gabidullin in Haskell
А почему ты не проголосовал за "однозначно плохо" в опросе про дин. типизацию?)
источник

K

Kir in Haskell
Лучи ненависти в сторону = и ==.
источник

IK

Ilya Kos in Haskell
Потому что бывают одноразовые вещи типо быстрых скриптов, в которых надо просто чтобы работало один раз, а не «было хорошо»
источник

к

кана in Haskell
data A a where
 X :: Int -> A Int

f :: A a -> a
f (X x) = x

тут x имеет тип Int, но вернуть нужно 'a', явная ошибка типов. Это тайпчекается только из-за того, что хаскель делает неявную коерсию из Int в 'a', которая в корке уже вполне явная
источник

AF

Alexey Fedotov in Haskell
я бы сказал, что так судить нельзя по очень простой причине. В жс разные поддерживаемые им типы ведут себя по разному, на уровне синтаксиса. При этом они так хорошо забоксены, что успешно притворяются другими типами, опять же, на уровне языка.
источник

IK

Ilya Kos in Haskell
В случае "2" + 2 меняется не просто тип, но и значение
источник

AF

Alexey Fedotov in Haskell
Т.е. он не в ту или другую сторону, а вообще где-то в другом пространстве обитает
источник

к

кана in Haskell
а, понял, да, разница есть
источник

K

Kir in Haskell
Так, стоп, а какова семантика <|>-то?
(<|>) :: Prism s t a b -> Prism s t' a' b' -> Prism s (Either t t') (Either a a') (Either b b')
?
источник

к

кана in Haskell
но смысл тот же, компилятор/интерпретатор где-то достраивает неявное преобразование

Просто в одном случае меняется значение, а в другом тип для тайпчекера, но код неявно достраивается и там и там
источник

JS

Jerzy Syrowiecki in Haskell
нет, тип же не меняется
источник

K

Kir in Haskell
Так в расте сделана поддержка юникода. Оно качает стандарт, в каком-то виде, парсит и генерит код
источник

к

кана in Haskell
тут наверное только траверсалы можно, призмы тут лишние
источник

к

кана in Haskell
ого, прикольно
источник

IK

Ilya Kos in Haskell
«Неявным достраиванием» ты тут называешь вывод типов
источник

к

кана in Haskell
нет, тут не вывод типов, тут же явное добавление коерсии
источник

IK

Ilya Kos in Haskell
Да, вывод типов желает вещи, Которые программист явно не писал
источник

IK

Ilya Kos in Haskell
That’s the point
источник

к

кана in Haskell
f (X x) = x
превращается в
f (X p x) = coe (sym p) x
источник

K

Kir in Haskell
> приведение

Так-то у объекта оба этих типа одновременно
источник