О чистоте и нечистотах
Aug. 24th, 2014 03:57 pmУважаемый
thesz написал у себя:
Для чистоты требуется 1) нормальный порядок упрощения (call-by-need или call-by-name, чтобы убрать зависимость от порядка вычисления) и 2) типы, чтобы ++i не пролезло в чистый код.
но, кажется, перепутал чистоту с хаскелем.
Ибо: 1) есть замечательный чистый функциональный язык Idris (даже проверяемо тотальный большей частью), в котором порядок вычислений строгий. Т.е. я бы заметил, что call-by-need требует чистоты, но чистота в общем случае не требует call-by-need.
То, что "есть классы программ, которые в нормальном порядке выразимы, в энергичном нет" - это правда, конечно, но к чистоте отношения не имеет.
Касательно 2) - бестиповое лямбда-исчисление тоже совершенно чистое, и для чистоты своей типов не требует. Чтобы ++i не пролезло в чистый код таки достаточно убрать из языка ++i и другие нечистоты.
Впрочем, без четкого определения чистоты все это довольно бессмысленное жонглирование. В частности, считать ли чистой функцию со свободными переменными.
Для чистоты требуется 1) нормальный порядок упрощения (call-by-need или call-by-name, чтобы убрать зависимость от порядка вычисления) и 2) типы, чтобы ++i не пролезло в чистый код.
но, кажется, перепутал чистоту с хаскелем.
Ибо: 1) есть замечательный чистый функциональный язык Idris (даже проверяемо тотальный большей частью), в котором порядок вычислений строгий. Т.е. я бы заметил, что call-by-need требует чистоты, но чистота в общем случае не требует call-by-need.
То, что "есть классы программ, которые в нормальном порядке выразимы, в энергичном нет" - это правда, конечно, но к чистоте отношения не имеет.
Касательно 2) - бестиповое лямбда-исчисление тоже совершенно чистое, и для чистоты своей типов не требует. Чтобы ++i не пролезло в чистый код таки достаточно убрать из языка ++i и другие нечистоты.
Впрочем, без четкого определения чистоты все это довольно бессмысленное жонглирование. В частности, считать ли чистой функцию со свободными переменными.
no subject
Date: 2014-08-24 09:29 am (UTC)2. хаскелисты - они такие, да
в любом случае - в чистом и модном языке всё равно будет какой нить IO или прочий ад.
no subject
Date: 2014-08-24 11:26 am (UTC)no subject
Date: 2014-08-24 11:50 am (UTC)Придут псы, сделают alter table и вся чудесная статически типизированая прога сдохнет.
А интегрировать статик типы и БД так, чтобы хипстеры не возопели в мучениях - на данный момент как-то слабо возможно.
no subject
Date: 2014-08-24 11:57 am (UTC)no subject
Date: 2014-08-24 12:25 pm (UTC)Да и вообще даже без сети нормальной семантики ошибок никто не делает, все любят жить в мире единорогов и не оценивать даже потребляемую RAM.
no subject
Date: 2014-09-11 09:29 am (UTC)И что, есть опыт? И программа на Хаскеле была? Или это художественное преувеличение, как обычно?
no subject
Date: 2014-09-11 09:32 am (UTC)Реально - DBA подкрутит права пользователю на просмотр колонок там или еще что такое - и все накроется в рантайме, если прога при запуске не выводит/проверяет свои типы из метаданных БД.
При проверке тоже накроется, но хотя бы сразу, а не через полчаса действий пользователя.
no subject
Date: 2014-09-11 09:44 am (UTC)Может ли "полчаса действия пользователя" быть плюсом, feature? Или это всегда и однозначно ошибка?
no subject
Date: 2014-09-11 09:54 am (UTC)Но крокодилу лучше знать, он вечно с ораклами какими-то работает.
no subject
Date: 2014-09-11 10:53 am (UTC)