Home
Objective Caml
ocaml@conference.jabber.ru
Суббота, 12 сентября 2009< ^ >
f[x] установил(а) тему: Камль -- http://caml.inria.fr | Логи -- http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/ | Верблюды грязи не боятся! | release crap
Конфигурация комнаты

GMT+4
[00:16:48] Typhon_ вошёл(а) в комнату
[00:29:30] ygrek вышел(а) из комнаты
[01:16:37] Рейко вышел(а) из комнаты
[02:13:37] Typhon_ вышел(а) из комнаты
[03:55:06] inky-kinky вышел(а) из комнаты
[09:57:20] ygrek вошёл(а) в комнату
[10:49:06] Typhon вышел(а) из комнаты: Replaced by new connection
[10:49:07] Typhon вошёл(а) в комнату
[10:54:19] sceptic вошёл(а) в комнату
[12:43:31] <gds> http://community.livejournal.com/ru_programming/1151282.html
[12:58:29] sevenov вошёл(а) в комнату
[13:11:45] <ermine> выбор из трех языков - надо учить все три языка
[13:12:20] <gds> в первом каменте так и написал, и даже развернул чуть.
[13:12:44] <ermine> а ты ырланк знаешь? :)
[13:13:59] <ermine> у меня из этого набора только хаскиль к делу не приложился
[13:15:25] <ermine> кстати, зная erlang, надо знать prolog
[13:15:31] <gds> ырланк -- только на слайдах видел. понял его возможности, разобрал message passing, ещё какие-то мелочи. знаю, что за день-два смогу начать писать на нём что-либо юзабельное.
[13:15:44] <gds> про про лог -- по по дробнее.
[13:16:19] <ermine> ну ырланк вырос из пролога, местами синтаксис и логика та же
[13:17:47] <gds> про логику -- странно.
[13:18:36] <ermine> скажем так - к прологу добавили асихронность
[13:19:03] <ermine> а асихронность в erlang практически неподражаема
[13:20:05] <ermine> gds: где-то в инете есть статья (в пдф) про историю erlang, там много про пролог написано, почитай
[14:41:25] Typhon вышел(а) из комнаты: Replaced by new connection
[14:41:26] Typhon вошёл(а) в комнату
[14:52:24] inky-kinky вошёл(а) в комнату
[15:49:32] inky-kinky вышел(а) из комнаты
[16:49:32] sevenov вышел(а) из комнаты
[17:41:33] <ygrek> кстати, на удивление, bld.sh в ocaml-dbf не работает в windows
[17:45:10] <gds> фигассе. Ща разберусь.
[17:45:29] <gds> только вот найду вендовый git для начала.
[17:46:39] <gds> это вопрос чести, как ты понимаешь.
[17:47:35] <gds> кстати, какой гит брать падвенду? сходу не ищется труъ.
[17:48:21] <ygrek> э. ну я имел ввиду что в cmd он не работает
[17:48:34] <ygrek> msys-git
[17:50:57] <gds> а, тогда смысла качать гит нет, но на будущее запомнил.
Это же шелл-скрипт. Нужно bld.bat рядом класть. Для других проектов частенько два скрипта параллельно живут.
[18:41:01] 604 вошёл(а) в комнату
[18:53:04] ygrek пытается понять куда myocamlbuild из ermine/xml инсталлит либу
[18:53:07] <ygrek> и инсталлит ли?
[18:53:48] <ygrek> btw для windows вся эта машинерия конечно требует исправлений
[18:54:29] <gds> какая именно машинерия? если просто дёргать ocamlfind, то ничего не надо менять особо. (dll/so не считается)
[19:20:14] john вышел(а) из комнаты: Replaced by new connection
[19:20:15] john вошёл(а) в комнату
[19:27:39] <ermine> ygrek: в ../../site-lib/xml относительно _build
[19:28:53] <ermine> ygrek: думаю что install_dir следовало бы брать из ENV, а в ENV заносить каким-нить вшивым build.sh скриптом
[19:29:43] ermine опять хочет порефакторить этот xml нафик
[19:29:54] <ermine> наделать гору функторов и заблудиться в них
[19:31:35] <ermine> и не только - заменить рекурсивные функции на стэки
[19:34:35] <gds> а чего рекурсия не прёт?
[19:34:42] sceptic вышел(а) из комнаты
[19:36:28] <ermine> они в себе запоминают accu
[19:37:01] <ermine> точнее запоминаются функции с ними, когда данные в буфере кончаются или просто между вызовами
[19:37:15] <ermine> надо от этого избавляться
[19:37:48] <ermine> gds: ты скажешь, что не надо избавляться?
[19:38:00] sceptic вошёл(а) в комнату
[19:42:59] <ygrek> ermine: вот не наблюдаю..
[19:43:35] <ermine> ygrek: в myocamlbuild_config.ml
[19:43:45] <ermine> ygrek: поиск install_dir
[19:44:37] <ygrek> а, понял, надо ocamlbuild install делать
[19:44:55] <ygrek> ermine -- почётный шаман ocamlbuild'а
[19:45:07] <ygrek> надо будет перенять код для генерации sql->ml
[19:45:19] <ermine> а, ты про это, вот в чем достоинство ocamlbuild - пока поймешь, репу об стол разобьешь
[19:45:46] <ygrek> доку просто писать надо!
[19:46:07] <ygrek> а как ocamlfind найдёт этот site-lib?
[19:46:27] <ermine> и тиражировать ее во все репы, я уже утомилась myocamlbuild_config.ml тиражировать и следить за обновлениями
[19:46:55] ygrek уже говорил что не понимает выноса всех либ в отдельные репы
[19:47:10] <ermine> сначала поиск в myocamlbuild.confib (это я у тебя стырила)
[19:47:19] <ermine> потом вызывает камлофинд
[19:47:21] <ermine> кажись
[19:47:28] <ygrek> наример можно было бы оформить erminelib - всё в одном месте
[19:47:32] <ermine> не найдет - путь будет пустой
[19:47:43] ygrek away
[19:48:40] <ermine> да палюбому мне всё это пока не нравится
[19:59:51] <ermine> мне хочется сделать оператор (++), который бы брал два разных типа
'a -> 'a -> 'clist
'c list -> 'a -> 'c list
'a -> 'b -> 'c list
'c list -> 'b -> 'c list
[20:00:04] ermine капризно смотрит на gds
[20:00:26] <ermine> собсно мне хотелось бы складывать в список элементы хмля и cdata
[20:01:14] <ermine> а то уже надоело руками выписывать 'c -> 'c -> 'c list везде, конвертя 'a и 'b руками в 'c
[20:01:39] <ermine> gds: что посоветуешь?
[20:08:02] <gds> вот блин. ничего хорошего не посоветую. были бы они объекты, в рантайме можно было бы разгребать.
может функций налупить:
# let ( +<+ ) a b = [a] @ b;;
val ( +<+ ) : 'a -> 'a list -> 'a list = <fun>
# let ( +>+ ) a b = a @ [b];;
val ( +>+ ) : 'a list -> 'a -> 'a list = <fun>
# let ( ++ ) a b = a @ b;;
val ( ++ ) : 'a list -> 'a list -> 'a list = <fun>
# let ( +<>+ ) a b = [a] @ [b];;
val ( +<>+ ) : 'a -> 'a -> 'a list = <fun>
[20:08:44] <gds> (да не только объекты -- всё, что может иметь одинаковый тип, например, всё это пропихнуть в записи/sum)
[20:09:38] <gds> касаемо рекурсии -- ну запоминают аккумулятор, и нехай себе. Или мешает чем-то? Не могу понять проблему.
[20:10:11] <gds> > доку просто писать надо!
о да, сегодня порывался разбираться с виками всякими.
[20:10:55] <gds> ygrek: про вынос либ в репы -- ну а как иначе? та же ocaml-dbf -- как с ней иначе? или я не про то?
[20:11:57] <ygrek> контекст. имелись ввиду sulci-либы
[20:12:55] <gds> а, местечковые либы разумно в одном репо хранить, таки. Если разойдётся, тогда уже коленца выкидывать.
[20:14:15] <ygrek> во во
[20:14:56] <ygrek> кстати планируешь создать для publicity проект dbf в камлофордже?
[20:15:53] <gds> если можно было бы создать проект и сказать -- "ребятушки, тут рыбы нет, рыба -- на http://repo.or.cz/.." -- тогда без проблем. Но там это делается?
[20:16:13] <gds> то есть, не слишком ли поцовато будет это выглядеть?
[20:16:18] <ygrek> думаю да
[20:16:25] <ygrek> и потом git там есть
[20:18:26] <gds> странно, при создании репо оно не предлагает.
[20:18:42] <gds> помню про личное обращение к товарищу начальнику.
[20:18:49] <ygrek> ну это типично камлевский подход. кому надо тот знает кого пинать :)
[20:18:50] <ygrek> ага
[20:21:56] <ermine> из местечковых сульци-либл как минимум три либлы используются в горгоне
[20:22:06] <ermine> что вы мне в этом случае посоветуете?
[20:23:16] ermine создала модуль с 11 рекурсивными модулями и вяло смотрит на умных
[20:25:29] <gds> про горгону -- посоветую пилить её :)
про 11 модулей -- ээ. Ну молодец, что тут сказать :)
[20:26:13] <gds> ygrek: как принято давать ссылку на гит-репо? урл веб-страницы с описанием, где точно репозиторий?
[20:27:26] <ermine> если гит-репу выкачивают через http, то обычный урл
[20:27:50] <ermine> иначе githost.domen/path/repo.git
[20:28:29] <ermine> gds: ну можешь посмотреть у меня на github.com/ermine
[20:34:08] <gds> в общем, будет урл вида http://repo.or.cz/w/ocaml-dbf.git
[20:36:13] <gds> написал описание, но какое-то кривое.
"ocaml-dbf library allows you to work with dbf (or xbase) files, usually created by ancient applications like foxpro. It comes with utility that 1. import/export dbf files from/to some sql dialect, 2. can try to fix incorrectly closed dbf file."
когда плохо умеешь писать на языке, конструкции языка заменяешь на типизированные перечисления. Гадость, знаю. Если есть варианты -- давайте.
[20:40:20] <gds> блин, во тупак. Короче, поправлю кое-как и зафигачу.
[20:47:43] <gds> а, там ещё в 255 символов влезть надо. ужос. посокращал до упора.
[20:49:31] DimitryKakadu вошёл(а) в комнату
[20:54:11] <DimitryKakadu> Я тут в трех строчках заблудился:
type logConst = True | False;;
type propval = Рair of string*logConst;;
type formula = logConst | propval;;
[20:54:22] <DimitryKakadu> на ИЛИ в третьей строчке ругается
[21:01:25] <gds> если нужен sum type, то его объявляют иначе. например, в строке №2 есть Pair of string*..., а не просто string*...
[21:01:30] <ermine> пеши с большой буквы
[21:01:33] <ermine> это не или
[21:03:07] ermine любовно смотрит на свои 11 модули, которые ничего не имплементируют
[21:07:13] <DimitryKakadu> кажется понял...
[21:07:29] <ermine> интересно, как запушить бранч гита
[21:08:34] <ermine> ygrek: у меня в xml появился бранч, в котором более интересный тип мля и из-за которого я хочу те самые операторы складывания в список
[21:10:04] ermine полезла в гугль
[21:10:41] DimitryKakadu вышел(а) из комнаты
[21:12:54] <gds> ermine: те операторы, которые я предложил, конечно убогие, но, если не знать о том, что из себя представляют значения, ничего лучше не придумать.
вот ты изучала хаксиль, значит читала про моноиды. они как раз отличаются от списков тем, что элементы имеют тот же тип, что и список. склеивающая операция -- List.append. то есть, всё это добро в список пихать.
тупой вариант, но альтернативный. Подумай, что именно тебе нужно.
[21:14:34] <ermine> gds: я вот хочу опубликовать свой бранчь
[21:15:04] <ermine> gds: мне жалко что один оператор для двух типов сразу не примерить
[21:15:51] <ermine> gds: проще говоря:
type t = | A of int | B of string
[21:16:19] <ermine> надо складывать int и string в t list
[21:16:52] <ermine> несомненно, что один из операндов - сам списокъ
[21:17:00] <ermine> иногда
[21:22:42] <ermine> вообще-то у меня type t = A of B.t | C of string, это бы слегка упрощало задачу если не надо было смешивать операции в одном файле
[21:28:58] <gds> ну налепи операторов -- и относительно удобно, и проверка типов.
конечно, статическая типизация накладывает ограничения, но зато и производительность ок. Если не нравятся неудобства -- заверни всё в объекты (опционально напиши синтаксическое расширение для этого), и всё. Будет тебе "+" работать как для int, так и для float, а твои штуки будут складываться на отличненько. С производительностью как у хаксиля, скорее даже хуже.
[21:34:55] <ermine> gds: мне б еще понять чему равно 'a ++ 'b ++ 'a
[21:35:17] <ermine> без расширений пока что
[21:42:11] <gds> если для объектов, и если есть приемлемый минимум того, что "складывается", то можно
type my = < add : a -> a ; описание других методов >
let ( ( ++ ) : my -> my -> my ) = fun a -> a#add b
[21:43:36] <ermine> хмл в объектах уже есть - pxp
[21:43:50] <ermine> гердовская поделка
[21:44:13] <gds> и чо.
[21:45:20] <ermine> не осилила в свое время, не найдя там SAX
[21:45:56] <gds> объекты -- способ расслабить типизацию посредством рантайм-затрат. В твоей задаче рантайм-затраты не важны особо.
[21:47:32] <ermine> мне надо бы поменьше всяких затрат - и рантаймных, и мыслительных
[21:47:45] <ermine> и мыщечных
[21:51:59] ermine проверила, кто "следит" за репами на гитхубе
[21:53:07] <ermine> ни одного местного :)
[21:55:11] <gds> вполне объяснимо. Кстати, давай список. А то я контачиться не хочу.
[21:56:33] <ermine> какой список?
[22:02:14] <gds> followers, ясное дело.
[22:03:26] <ermine> а там почти ни одного цамлиста
[22:04:29] <gds> нипанятна. зачем же им тогда?
[22:04:39] <gds> ygrek: publicity вёдрами! http://forge.ocamlcore.org/projects/ocaml-dbf/
[22:43:03] <ygrek> <f[x]> why git repo selection is still not available in forge.ocamlcore web interface?
<hcarty> f[x]: It is not built in to the forge software (yet).
* albacker has quit (Client Quit)
<hcarty> f[x]: It is currently up to the library authors to provide a link to the git repo, if they have one.
[22:44:44] <gds> одобряют -- ок.
[22:47:16] <ygrek> > как минимум три либлы используются в горгоне
> [19:21:59]<ermine> что вы мне в этом случае посоветуете?
вариант номер раз - создать общую либу
вариант номер два - отдельные либы но в одной репе (как ocamlnet)
[22:48:05] <ermine> вот перепаханный тип хмля:
htp://github.com/ermine/xml/blob/001a0fda0509e34be173651f143444d4b5f8b3b9/xml.ml
[22:48:23] <ermine> вот перепаханный тип хмля:
http://github.com/ermine/xml/blob/001a0fda0509e34be173651f143444d4b5f8b3b9/xml.ml
[22:49:20] <ermine> вследствие него силько сократился список функций в этом файле
[22:51:55] ygrek завёл акк на гитхабе, но не репы. что-то оно немножко пугает своей "социальностью"
[22:52:14] <gds> пока не разошлось по другим проектам -- общая либа. как разойдётся -- чесать репу. честно, не знаю, что делать. тот же ocamllex_utf_pos хз как отделять, чтобы нежно.
[22:53:05] <gds> ygrek: шо гитхаб, что битбакет, один хрен, по слухам. а вот что меня напугало в гитхабе, так это "terms of service".
[22:53:33] <ermine> да гитхуб имеет удобный интерфейс в elinks, более удобный чем в сафари на макбуке
[22:53:35] <gds> а насчёт социальности -- изоморфно любой днявочке, только вместо постов идут коммиты.
[22:54:30] <ermine> ygrek: это ты про гит субмодули, где один pull вытягивает все остальное автоматом?
[22:55:47] <ermine> я пушю свои проекты сразу в два места - на гитхуб (для всех) и на свой сервер (ну... надеюсь никто не прознает урлы)
[22:59:20] <ermine> кстати, раздельные либлы удобны, когда хочется завести отдельный бранч для отдельной либлы и в ней копаться, потом создать бранч в другой либле и адаптировать ее для первого бранча
[22:59:58] <ermine> а потом - грохнуть master в обоих либлах и сделать бранчи мастером
[23:00:11] ermine так уже проделала, понравилось
[23:01:02] <gds> dvcs -- это круто. даже не важно, меркуриал это или базаар.
[23:57:06] sevenov вошёл(а) в комнату
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!