metaclass: (Default)
[personal profile] metaclass
Очевидно ли, почему flatten и (partial apply concat) в Clojure могут выдать разные результаты? После хаскеля кложурный flatten, работающий на все уровни "вглубь", выглядит непривычно.

По ходу, статическая типизация делает невозможными некоторые типы программ, возможные при динамической.
Соответственно, наиболее заебатая статическая типизация, с какими-нибудь адскими зависимыми типами, должна делать невозможными еще большее количество программ.
А самая правильная типизация - это при которой множество допустимых программ пустое.

Date: 2012-02-26 06:11 pm (UTC)
From: [identity profile] blackyblack.livejournal.com
Есть такая. Штука действительно демоническая, но в целом понятная. Там просто супер-цикл, в котором постоянно обрабатываются сообщения. Можно залить код, положить его рядом, а потом послать сообщение, в котором выполнение перенаправится на новый код. Такую штуку можно сделать и в обычных языках, но за счёт ориентированности на обработку сообщений и функциональный стиль, получается просто и из коробки такой трюк.

Date: 2012-02-26 06:38 pm (UTC)
From: [identity profile] kurilka.livejournal.com
Не надо там сообщений, просто следующий вызов module:function(...) после обновления приведёт к выполнению кода уже нового модуля (за минусом подробностей типа gen_server:conde_change/3 и т.п.)

Date: 2012-02-26 06:45 pm (UTC)
From: [identity profile] blackyblack.livejournal.com
Не верю. Насколько я помню, в книжке явно слали сообщение для замены кода.

Date: 2012-02-26 07:04 pm (UTC)
From: [identity profile] kurilka.livejournal.com
Ну против верований возражения придумывать нет желания.
Реально же достаточно в консоли l(module) сделать, но по-нормальному, конечно, стоит release_handler использовать, а в принципе в документации все описано - http://www.erlang.org/doc/man/code.html#id101126

Date: 2012-02-26 07:09 pm (UTC)
From: [identity profile] blackyblack.livejournal.com
code:load_file я делал. Но, насколько я помню, если в модуле рекурсивный вызов без обработки сообщений, то обновить такую функцию нельзя.

Date: 2012-02-26 07:20 pm (UTC)
From: [identity profile] kurilka.livejournal.com
code:load_file - это не сообщение, касательно обработки сообщений - это не так, хотя с практической т.зр. иметь рекурсивную функцию в процессе (модуле), которая не читает сообщения, довольно бессмысленно. Касательно "нельзя" есть лишь ограничение на то, что вызов должен иметь вид module:function, т.е. вызов без указания модуля обращается "в ту же версию".

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 31st, 2025 10:24 am
Powered by Dreamwidth Studios