Home
Objective Caml
ocaml@conference.jabber.ru
Вторник, 18 мая 2010< ^ >
f[x] установил(а) тему: Камль -- http://caml.inria.fr | Логи -- http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/ | Верблюды грязи не боятся! | release crap | judge by commits, not comments | voice по запросу | ocaml мёртв, move on
Конфигурация комнаты
Участники комнаты

GMT+4
[00:02:07] ermine вышел(а) из комнаты
[00:16:43] gds вышел(а) из комнаты
[01:18:28] Kakadu вышел(а) из комнаты
[01:20:29] digital_curse вышел(а) из комнаты
[01:28:45] tci8rldpld_g вошёл(а) в комнату
[01:29:21] tci8rldpld_g вышел(а) из комнаты
[01:43:25] sceptic вошёл(а) в комнату
[02:19:25] c3due71d93wl вошёл(а) в комнату
[02:19:25] c3due71d93wl вышел(а) из комнаты
[08:13:24] iNode вышел(а) из комнаты
[08:42:34] vlan вошёл(а) в комнату
[08:47:40] iNode вошёл(а) в комнату
[09:24:39] ygrek вошёл(а) в комнату
[09:45:47] gds вошёл(а) в комнату
[10:03:07] serp256 вошёл(а) в комнату
[10:08:24] ʇsʎɯ вошёл(а) в комнату
[10:36:06] Typhon вышел(а) из комнаты
[10:39:19] ermine вошёл(а) в комнату
[11:57:41] npoektop вошёл(а) в комнату
[12:41:30] Kakadu вошёл(а) в комнату
[13:34:14] <gds> добавил "module Int_as_int_overflow" (арифметика с проверкой переполнения) в статью http://gdsfh.dyndns.org/kamlo/InfixOperators , чтобы в гугель не лазить каждый раз при необходимости.
[13:36:20] <ʇsʎɯ> такой вопрос, есть векторный квантователь (LVQ), сейчас написан в виде класса с 3 методами (init, train, run). Можно ли его переписать в чисто функциональном стиле?
[13:36:26] <ʇsʎɯ> Я что-то никак не соображу, как это красиво сделать
[13:37:22] <komar> type vector, let init, let train, let run?
[13:45:36] <gds> переписать в функциональном стиле можно всё, но неизвестно, будет ли из этого профит.
[13:46:18] <ʇsʎɯ> komar: твоё предложение ничего не даёт по факту
[13:46:24] <ʇsʎɯ> gds: вот и я о том
[13:48:11] komar перечитал вопрос, подумал.
[13:48:14] <komar> Можно.
[13:49:32] <ʇsʎɯ> просто так получится, что "o#m p" первратится в "m o p"
[13:49:41] <ʇsʎɯ> что, конечно, функциональнее, но... хз
[13:51:37] <komar> Императивщина искусила тебя, неделю хаскела тебе.
[13:52:12] <gds> если брать общие соображения, то смысла нет переписывать императивный алгоритм в функциональном стиле.  А lvq -- вроде как императивнее некуда.
[13:53:22] <ʇsʎɯ> да нет ))
[13:53:29] <ʇsʎɯ> он у меня внутри на map сделан
[13:53:38] <ʇsʎɯ> сейчас кода под рукой нет
[13:53:41] <ʇsʎɯ> завтра могу показать
[13:53:49] <ʇsʎɯ> там 20 строк и ещё 10 в util
[13:54:57] <gds> у неё внутре нейронка?  Ну не знаю, покажи, было бы интересно.
[13:55:13] <ʇsʎɯ> там не совсем нейросет
[13:55:20] <ʇsʎɯ> просто о нём удобно так думать
[13:55:30] <ʇsʎɯ> это просто автоклассифицирующий алгоритм
[13:59:04] <gds> кстати, иногда удобен объектно-функциональный стиль: объекты неизменяемые, а при необходимости пересоздаются с нужными полями и методами.
[14:46:25] vlan вышел(а) из комнаты
[14:53:59] <ʇsʎɯ> gds: ну, в моём случае только мутабельность, потому что пересоздавать каждый раз - ооочень долго
[15:01:05] <ʇsʎɯ> да и gc сдохнет освобождать память
[15:02:07] <ʇsʎɯ> 3000*100*8 = 2.5 Мб одна марица коэффициентов, например.
[15:06:05] <ermine> как можно защитить абстрактные типы от убийства?
[15:06:35] <ermine> я в код для отладки вставила Gc.compact () и теперь наблюдаю преждевременную финализацию ценных переменных
[15:07:03] <ermine> которые в явном виде не используются в конце кода
[15:08:15] <ermine> если вставить Gc.compact в цикл, то та ценная переменная финализируется повторно, от чего все валится в корку
[15:08:26] <ermine> хнык
[15:09:11] ermine вспомнила, как страдала с custom tree в gtk, наверное та же картинка была, тогда не догадалась потестить с помощью могущественной Gc.compact () в цикле
[15:09:54] <gds> на переменные кто/что ссылается?  чем они ценные?
[15:09:58] <f[x]> используй явно в коде :)
[15:10:25] <f[x]> чем же они ценны раз их никто не использует?
[15:10:29] <ermine> да как бы по смыслу незачем, но щас проверю эту теорию
[15:10:47] <ermine> главное - непонятно пчу оно неоднократно финализирует то, что уже убило
[15:11:31] <ermine> у меня в custom_finalize стоит принтф, так что все видно
[15:12:23] <gds> насчёт циклических списков -- пока код туп, но вот так уже умею: http://paste.org.ru/?mchjxc  (на выходе -- честный циклический список).
[15:13:29] Mon вышел(а) из комнаты
[15:13:44] Mon вошёл(а) в комнату
[15:13:50] <ermine> хм, не помогло вставить в конце кода пустышку типа let _a = ценная_переменная in ()
[15:15:50] <ermine> а не
[15:16:04] <ermine> ладно, надо покопаться
[15:16:05] <gds> для нативкода и не поможет, думаю.  А вот let _a = ценная_переменная  -- это вариант.  (в revised syntax было бы value _a = ценная_переменная -- как раз тот момент, где полезно различие let/value)
[15:17:36] <ermine> вся ьеда оказалась в самой finalize
[15:18:29] <ermine> у меня таким образом другим боком всплыла проблема - как не создавать новый абстрактный тип для уже существующего абстрактного типа
[15:19:14] <ermine> иначе в финализации вызывается функция закрытия всего, что привязано к абстрактному типу
[15:19:42] <ermine> ужасно
[15:25:22] <ermine> в качестве солюшена - отказаться от вызова close() в finakize(), пока не научилась находить уже существующие объекты
[15:25:39] <ermine> хныг
[15:27:56] <ʇsʎɯ> я снова ничего не понял
[15:28:06] <ʇsʎɯ> может просто отказаться от этих ненужных переменных?
[15:28:46] <ʇsʎɯ> или сделай из них лямбду, а в конце вызови её
[15:28:52] <ʇsʎɯ> например
[15:29:16] <ʇsʎɯ> хотя, я в этих функциональных фишках нубас
[15:30:59] <ermine> это программинг на иперативном Цэ
[15:31:22] <ermine> и соответственно уговаривание камла не выпендриваться с gc
[15:34:25] <ermine> так, перестало падать в кору, можно резвиться дальше
[15:47:31] <gds> ermine: заведи top-level value с нужным значением, и мусорщик не будет его собирать.
[15:48:12] Mon вышел(а) из комнаты
[15:49:19] Mon вошёл(а) в комнату
[15:49:45] <ermine> gds: это костыль
[15:49:57] <ermine> gds: к тому же, я обнаружила щас, что пофиксила не ту кору
[15:51:31] <ʇsʎɯ> ну, призрачные неиспользуемые нужные переменные - тоже не лучший дизайн
[15:52:27] <ermine> это обычно глобальные переменные, это обычная шняга в С библиотеках
[15:53:03] <ermine> и в общем полезная штука для защиты в тредах
[15:53:59] <ermine> надо почитать чонить умное и вкусное про gdb
[17:01:11] yakov вошёл(а) в комнату
[17:01:19] <yakov> hey
[17:03:16] <gds> yo
[17:25:03] <ermine> если я перекомпилю камло с -ggdb, то остальное не придется перекомпиливать, чтобы продолжало работать как раньше?
[17:29:19] <ʇsʎɯ> ermine: нет, но дебажить сможешь только внутри окамла
[17:30:05] <ʇsʎɯ> т.е. gdb и остальное будет "по шагам" выполнять, но шаг будет не равен строчке кода
[17:30:08] <ʇsʎɯ> а как-то хз как
[17:30:24] gds вышел(а) из комнаты
[17:30:30] <ermine> хныг
[17:30:47] <ermine> я имела в виду то, что сигнатуры нигде не сломаются
[17:32:44] iNode вышел(а) из комнаты
[17:35:25] <ermine> блин, конфигурялка у камля охрененная
[18:37:22] gds вошёл(а) в комнату
[19:06:37] serp256 вышел(а) из комнаты
[19:16:56] npoektop вышел(а) из комнаты
[19:20:51] <yakov> ermine: в смысле говно?
[19:32:33] ʇsʎɯ вышел(а) из комнаты
[20:04:05] Kakadu вышел(а) из комнаты
[20:29:34] yakov вышел(а) из комнаты
[20:36:26] digital_curse вошёл(а) в комнату
[20:57:56] m0fkkxp7d8x0u вошёл(а) в комнату
[20:58:00] m0fkkxp7d8x0u вышел(а) из комнаты
[21:00:48] d5t6s438e7 вошёл(а) в комнату
[21:00:52] d5t6s438e7 вышел(а) из комнаты
[21:24:10] Kakadu вошёл(а) в комнату
[21:34:34] Typhon вошёл(а) в комнату
[22:14:03] iNode вошёл(а) в комнату
[22:38:14] iNode вышел(а) из комнаты
[22:38:26] iNode вошёл(а) в комнату
[23:13:26] lelf вошёл(а) в комнату
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!