Re[31]: Есть ли вещи, которые вы прницпиально не понимаете...
От: alex_public  
Дата: 06.01.14 12:12
Оценка:
Здравствуйте, Klapaucius, Вы писали:

K>Такую, чтоб ошибки возникали не при "передавании типа", а при написании обобщенного кода. Обобщенный код на плюсах практически нетипизированный, хотя нетипизированность в данном случае обычно называют "permissiveness", но сути это не меняет.

K>Об этом я и писал: "На самом деле понятно, как это предполагается использовать обобщенно, но проблема тут будет в том, что это обобщение не типизировано. Родственная проблема — семантическая неопределенность. Про (=<<) можно много чего сказать не зная ничего о конкретной имплементации, про ваш перегруженный сдвиг ничего сказать нельзя."

Ага, идея претензии понятна, но на самом деле она не имеет вообще никакого смысла в C++ по очень простой причине. Смысл был бы, если бы данный шаблон можно было скомпилировать (в библиотеку какую-то или даже просто объектный файл) сам по себе. Но это в C++ невозможно. Неинстанцированные шаблоны просто не существуют для компилятора и имеют смысл в коде не более чем комментарии. Ну а при инстанцированние очевидно уже возникает полная типизация во весь рост. Т.е. тут компилятор чётко выполняет свою работу в области типизации и не позволит существовать некорректному коду.

K>Даже больше одного. Я несколько раз объяснял, что контроль за эффектами и монады это темы слабосвязанные. Никакой необходимости использовать монады для такого контроля в чистом языке нет. Вы либо не понимаете, либо просто игнорируете мои объяснения и как ни в чем не бывало снова это повторяете. Скорее всего игнорируете, потому, что если бы не понимали — вы бы какие-то вопросы по этой теме задали.


Вообще то я это давно понял, согласился и т.п. И продолжаю разговор уже именно про эти самые эффекты.

K>Нет, IO и ST реализуются с помощью инкапсуляции (неэкспорта конструктора) и Rank-2 полиморфизма во втором случае. Монады особенностями реализации не являются. Монады используются для создания разделяемой кодовой базы для обобщенной работы с эффектами, функциями, списками, итераторами, генераторами значений для тестов, парсерами, сериализаторами/десериализаторами и еще зиллионом разных вещей. Будут среди них IO и ST или не буду — ничего принципиально не поменяет.


Я это уже давным давно понял. ))) Да, но только не надо совсем отделять монады от этого дела. Во-первых они всё же используются чтобы частично скрыть некие "ужасы" реализации IO/ST Хаскеля. И во-вторых, с учётом важности этого вопроса для любого нормального приложения, на практике получается что в Хаскеле монады мы видим чаще всего именно в этой области.

K>Это совершенно отдельный разговор не про полезность монад, а про полезность контроля эффектов.


Совершенно верно. И как раз про это я спрашиваю уже очень давно и так ни разу и не получил ответа. Естественно про какие-то случаи из реальной практики, а не обобщённую теорию..

Ну а про монады мне вообще то уже давно всё понятно, как в Хаскеле, так и в других языках...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.