Форум
Философия программирования
Тема
Как правильно задавать вопросы
B
I
abc
U
X
3
X
3
H1
H2
H3
H4
H5
H6
Asm
C/C++
C#
Erlang
Haskell
IDL
Java
Lisp
MSIL
Nemerle
ObjC
OCaml
Pascal
Perl
PHP
Prolog
Python
Ruby
Rust
SQL
VB
Здравствуйте, AlexRK, Вы писали: ARK>Здравствуйте, samius, Вы писали: S>>Вот здесь я должен сказать тебе спасибо. ARK>:beer: ARK>>>Тогда такой вопрос: каким образом, глядя в исходники, ты понимаешь, что функция putStr чиста? Она не вызывает никаких "грязных" функций, не так ли? S>>Не вызывает, хотя и создает грязный action, чернее мазута. ARK>ОК, таким образом идеологически мы представляем программу на хаскеле одним из следующих способов. ARK>1) Некоторый грязный вычислитель встроен прямо в программу, но на самом верху: ARK>[ccode] ARK>void main() ARK>{ ARK> Action action = EvaluatePureSourceAndReturnDirtyAction(); ARK> ExecuteDirtyAction(action); ARK> return void; ARK>} ARK>[/ccode] ARK>2) Вычислителя вообще нет, он где-то снаружи: ARK>[ccode] ARK>Action main() ARK>{ ARK> return EvaluatePureTextAndReturnDirtyAction(); ARK>} ARK>[/ccode] ARK>Возникают такие вопросы. ARK>Если корректен вариант 1, то в чем состоит смысл выделения всей программы в action? Ведь, "раскрыв скобки", т.е. применив к чистой части ExecuteDirtyAction, мы все равно получим обычную грязную программу, с отдельными чистыми островками внутри. Почему бы сразу, без промежуточного этапа, не написать программу в виде набора грязных и чистых функций? В чем ценность этого промежуточного этапа? ARK>Если корректен вариант 2, то в чем его отличие от программы на C++? Любая программа на С++ это тоже по сути некий грязный action, который сам по себе не выполнится, пока его кто-то не вызовет.
Теги:
Введите теги разделенные пробелами. Обрамляйте в кавычки словосочетания с пробелами внутри, например:
"Visual Studio" .NET
Имя, пароль:
Загрузить
Нравится наш сайт?
Помогите его развитию!
Отключить смайлики
Получать ответы по e-mail
Проверить правописание
Параметры проверки …