Size: a a a

2021 February 20

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Constantine Drozdov
а по-моему оно называется "документация"
То есть у нас выбор между типами и документацией... хмм, что ж выбрать?
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Ilya Lakhin
Да, кстати. Если бы нам хватало только лишь типов, мы бы вообще не писали документацию :)
с типами документацию можно сильно упростить, а иногда и вообще без неё обойтись
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
вон доге тупо по типам апи смотрит, в доки не заглядывает никогда
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
офк в тех япах где это так можно сделать: раст, хачкель, ..
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Ilya Lakhin
Ну, это непростая задача, я согласен. Плавающий контракт означает, что программу можно понять так, а можно этак. Компилятор по факту(и в силу правил семантики языка) выбирает какой-то определенный путь, и выдает ошибку в соответствии с ним, хотя фактически ты мог иметь ввиду что-то совершенно иное(то есть пойти по иному пути). Фактически нам нужен более умный компилятор, который более глубоко способен понимать суть того, что ты пытался неявно выразить. Повторюсь, что это непростая исследовательская задача, но тут есть пространство для исследования, как мне кажется.
ни один компилятор не поймет что ты хотел написать если другой человек не может понять, что ты хотел написать.
источник

CD

Constantine Drozdov in rust_offtopic
Αλεχ Zhukovsky
То есть у нас выбор между типами и документацией... хмм, что ж выбрать?
С типами получается всё хорошо только в узком подмножестве задач.
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Constantine Drozdov
С типами получается всё хорошо только в узком подмножестве задач.
а без типов это то же самое что с типами, только тип у тебя один-единственный, самый общий
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
каким образом у вас это получается лучше - яхз
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
логика чем хуже - тем лучше
источник

CD

Constantine Drozdov in rust_offtopic
Αλεχ Zhukovsky
офк в тех япах где это так можно сделать: раст, хачкель, ..
Тут главное не пытаться общаться с любой достаточно сложной системой. Например, доки к winapi содержат требование, что если WM_INITDIALOG возвращает FALSE, то обработчик выставил фокус на потомка диалога. Не думаю, что подобное требование может быть записано системой типов раста или хаскеля
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Constantine Drozdov
Тут главное не пытаться общаться с любой достаточно сложной системой. Например, доки к winapi содержат требование, что если WM_INITDIALOG возвращает FALSE, то обработчик выставил фокус на потомка диалога. Не думаю, что подобное требование может быть записано системой типов раста или хаскеля
> Не думаю, что подобное требование может быть записано системой типов раста или хаскеля

Конечно может
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
и должно
источник

CD

Constantine Drozdov in rust_offtopic
Αλεχ Zhukovsky
> Не думаю, что подобное требование может быть записано системой типов раста или хаскеля

Конечно может
И как его записать?
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
WM_INITDIALOG : (flag : Bool ** if flag then IsChildFocused child else ())
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
ну что-то такое например
источник

CD

Constantine Drozdov in rust_offtopic
Αλεχ Zhukovsky
WM_INITDIALOG : (flag : Bool ** if flag then IsChildFocused child else ())
а как это требование дальше стереть?
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Constantine Drozdov
а как это требование дальше стереть?
ну например вызвать функцию которая принимает IsChildFocused child и возвращает Not (IsChildFocused child)
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
любое утверждение которое можно сфорулировать - можно выразить в типах. Вопрос только в том, насколько удобно этим будет пользоваться
источник

CD

Constantine Drozdov in rust_offtopic
Αλεχ Zhukovsky
ну например вызвать функцию которая принимает IsChildFocused child и возвращает Not (IsChildFocused child)
Не про то. Существуют мономорфные границы. WM_INITDIALOG создавал поток, вызывая CreateThread, сигнатура которого в принципе не может протащить возврат свойства IsChildFocused.
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
но те утверждения которые можно недорого выражать - *нужно* выражать
источник