T>>Если серьёзно, то твоё запрещение и реализуется через синтаксическое ограничение.
BZ>в конечном счёте ты прав, но как бы никакого нового синтаксиса не нужно
Да ты что!
Ещё скажи, что синтаксические правила не поменялись.
Было
function ::= proc_func_header '::' type_expr 'begin' statement 'end' ';'
стало
function ::= proc_func_header '::' type_expr 'begin' func_statement 'end' ';'
где func_statement, в отличии от обычного statement, не содержит вызова процедуры.
Это ли не новый синтаксис?
T>>Этот?
К>Т. е. изобрели какой-то ключик, отключающий проверку типов в хаскеле до рантайма?
К>Если нет, то к чему твоя реплика, ибо речь шла о динамической типизации?
Вообще, я дурачусь.
Если же быть чуть более серьёзным, то Хаскель — это единственный широко распространённый язык, где есть синтаксис для ввода-вывода.
Здравствуйте, thesz, Вы писали:
BZ>>вывод типов примерно так и выглядит. тот же q-lang — скриптовый язык, но основанный на inference вместо динамики. да и сам haskell хорош в качестве скриптового языка
T>ТЫ кого-то с кем-то путаешь.
ага. это была kaya. вообще:
http://sourceforge.net/search/?type_of_search=soft&words=type+inference
DAS>А как же Pid ! {} и receive в Erlang? Правильно ли я понимаю, что это как
DAS>раз и есть тот побочный эффект, про который пишет Влад?
Да, так и есть — функция, отправляющая или принимающая сообщение, является "грязной". Об этом пишет Joe Armstrong в
Armstrong thesis 2003 (pdf), глава 8.3:
To simplify matters I say that a function is dirty if it sends or receives a message or if it calls one of the following Erlang BIFs: apply, cancel_timer, check_process_code, delete_module, demonitor, disconnect_node, erase, group_leader, halt, link, load_module, monitor_node, open_port, port_close, port_command, port_control, process_flag, processes, purge_module, put, register, registered, resume_process, send_nosuspend, spawn, spawn_link, spawn_opt, suspend_process, system_flag, trace, trace_info, trace_pattern, unlink, unregister, yield.