Size: a a a

2020 June 10

ЕС

Егор Савельев... in rust_offtopic
Не понимаю что ты требуешь. Тапчекер тайпчекает тело, и проверяет совпадения. Все нормально.
источник

AZ

Alex Zhukovsky in rust_offtopic
Егор Савельев
Не понимаю что ты требуешь. Тапчекер тайпчекает тело, и проверяет совпадения. Все нормально.
ну так откуда тайпчекер узнает, имеля в виду Int или Nat?
источник

ЕС

Егор Савельев... in rust_offtopic
Alex Zhukovsky
ну так откуда тайпчекер узнает, имеля в виду Int или Nat?
Тут нет типов Int, Nat, тут есть значение которое возвращает функция)
источник

ЕС

Егор Савельев... in rust_offtopic
Давай лучше конкретный пример неработающего с твоей точки зрения кода
источник

ЕС

Егор Савельев... in rust_offtopic
Alex Zhukovsky
ну тело функции мы не тайпчекаем значит ? ведь

(x : Int  ** myOtherFunc (myFunc x) 10)
и например
(x : Nat  ** myOtherFunc (myFunc x) 10)

требуют разного тела
А конкретно здесь если ты хочешь ограничить чтобы x был больше или равен нулю, пишешь
x: ... && x > 0
источник

AZ

Alex Zhukovsky in rust_offtopic
мне немного лень расписывать
источник

AZ

Alex Zhukovsky in rust_offtopic
но учитывая какие у идриса проблемы с простейшим выводом типов, то такая магия либо невозможна в завтиповом языке, либо будет тормозить как черт (а значит, никому не будет нужна)
источник

ЕС

Егор Савельев... in rust_offtopic
Alex Zhukovsky
ну так откуда тайпчекер узнает, имеля в виду Int или Nat?
Ну и напоследок: я считаю что числовой тип Nat должен проходить в числовой тип Int без ограничений и необходимого явного преобразования.
источник

ЕС

Егор Савельев... in rust_offtopic
С тз математики это логично.
источник

ЕС

Егор Савельев... in rust_offtopic
Alex Zhukovsky
но учитывая какие у идриса проблемы с простейшим выводом типов, то такая магия либо невозможна в завтиповом языке, либо будет тормозить как черт (а значит, никому не будет нужна)
Ну вот пока не научатся, статическая типизация не оправдывает себя.
источник

DS

Doge Shibu in rust_offtopic
Alex Zhukovsky
но учитывая какие у идриса проблемы с простейшим выводом типов, то такая магия либо невозможна в завтиповом языке, либо будет тормозить как черт (а значит, никому не будет нужна)
Задача вывода типов в языке с зав типами не разрешима по очевидным причинам
источник

ЕС

Егор Савельев... in rust_offtopic
Doge Shibu
Задача вывода типов в языке с зав типами не разрешима по очевидным причинам
Хрень несёшь. Попробуй ещё раз.
источник

ЕС

Егор Савельев... in rust_offtopic
Это в идрисе неразрешима, потому что Идрис, хм, говно
источник

ЕС

Егор Савельев... in rust_offtopic
Если правильно обложить ограничениями зависимые типы, то вполне задача станет разрешимой. Учитывая ещё то, что большинство из того что предоставляет Идрис, не нужно в современном программировании.
источник

DS

Doge Shibu in rust_offtopic
Егор Савельев
Хрень несёшь. Попробуй ещё раз.
Какая хрень?

Начать можно отсюда:
https://link.springer.com/chapter/10.1007/BFb0037103
источник

ЕС

Егор Савельев... in rust_offtopic
Спасибо, но покупать я это не собираюсь.
источник

DS

Doge Shibu in rust_offtopic
Егор Савельев
Спасибо, но покупать я это не собираюсь.
Scihub к вашим услугам
источник

ЕС

Егор Савельев... in rust_offtopic
Спасибо, я лучше займусь более полезным делом. Когда поймёте как выводить типы можно будет поговорить. До тех пор самым лучшим языком будет питон.
источник

DS

Doge Shibu in rust_offtopic
Егор Савельев
Спасибо, но покупать я это не собираюсь.
Нашел краткий пересказ:

First let me clarify what is proven in that paper: he shows that in a dependent calculus without annotations on the abstractions, it is undecidable to show typeability of a term in a non-empty context. Both of those hypotheses are necessary: in the empty context, typability reduces to that of the simply-typed λ-calculus (decidable by Hindley-Milner) and with the annotations on the abstractions, the usual type-directed algorithm applies.

The idea is to encode a Post correspondence problem as a type conversion problem, and then carefully construct a term which is typeable iff the two specific types are convertible. This uses knowledge of the shape of normal forms, which always exist in this calculus. The article is short and well-written, so I won't go into more detail here.
источник

DS

Doge Shibu in rust_offtopic
Само собой, что для какого-то подмножества языка вывод типов можно будет сделать, но всегда будут термы, для которых тип надо будет явно указать
источник