Home
Objective Caml
ocaml@conference.jabber.ru
Пятница, 12 августа 2011< ^ >
f[x] установил(а) тему: Камль -- http://caml.inria.fr | http://camlunity.ru/ (теперь с git доступом!) | Верблюды грязи не боятся! | release crap, enjoy NIH | репортьте баги официальным дилерам | ocaml мёртв и тормозит, move on | stdlib only? - ССЗБ
Конфигурация комнаты
Участники комнаты

GMT+4
[00:01:06] <ygrek> ermine: посмотри в Set
[00:01:21] ygrek почитал про lib-functor и нифига не понял
[00:04:01] <gds> где почитал?
[00:04:07] <gds> сходу не ищется.
[00:06:40] <ygrek> ocamlpro
[00:08:03] <ermine> Typhon: где там?
[00:11:08] shaggie вышел(а) из комнаты
[00:14:12] ermine вышел(а) из комнаты
[00:53:20] <gds> кстати вот, у меня в кадастре тоже будет свой Set, с объектами и классами.  Вот, как раз, появилась нужда.  Пока в todo запишу, но это неотвратимо.
Кроме того, там же понадобилось разделять "коллекции только для чтения" и "морфизмы" -- в плане операций get_{exn,opt} и mem они одинаковы, а вот всякий fold уже не выйдет над морфизмом в общем виде, но выйдет над коллекцией.  Например, из-за того, что морфизмом может быть "узнать ип-адрес по доменному имени", что тоже катит под mem/get (под текущий интерфейс map_ro), что, в свою очередь, клёво.
[01:06:56] gds вышел(а) из комнаты
[01:17:22] Typhon вышел(а) из комнаты: Replaced by new connection
[01:17:24] Typhon вошёл(а) в комнату
[01:21:34] Kakadu вышел(а) из комнаты
[01:45:26] ygrek вышел(а) из комнаты
[03:33:22] digimmortal вошёл(а) в комнату
[04:00:50] Typhon вышел(а) из комнаты
[04:44:02] digimmortal вышел(а) из комнаты
[04:47:55] zinid вошёл(а) в комнату
[09:27:25] Kakadu вошёл(а) в комнату
[10:01:29] bobry вышел(а) из комнаты
[11:09:39] gds вошёл(а) в комнату
[11:13:33] Typhon вошёл(а) в комнату
[11:17:31] <gds> кто там ырланк мучает?  http://piqi.org/blog/2011/08/11/piqi-0-5-6-released/
[11:46:37] mrm вошёл(а) в комнату
[12:20:14] ftrvxmtrx вышел(а) из комнаты
[12:20:31] ftrvxmtrx вошёл(а) в комнату
[12:29:33] ermine вошёл(а) в комнату
[12:35:05] bobry- вошёл(а) в комнату
[12:48:11] komar вышел(а) из комнаты: Replaced by new connection
[12:48:11] komar вошёл(а) в комнату
[13:08:04] ftrvxmtrx вышел(а) из комнаты
[13:34:50] mrm вышел(а) из комнаты
[13:39:05] <bobry-> gds, Typhon товарищи, а не найдется ли у вас время на статейку про камль и quickcheck?
[13:39:56] Kakadu вышел(а) из комнаты
[13:40:28] <Typhon> есть же блогопост
[13:40:32] <Typhon> омериканский
[13:40:42] <Typhon> бтв, у батареек есть какой-то свой квикчек
[13:41:16] <Typhon> http://brierwooddesign.com/2009/1/16/ocaml-quickcheck-translating-quickcheck-from-haskell-type-classes-to-ocaml-modules — блогопсто, умерло, правда %)
[13:41:29] Kakadu вошёл(а) в комнату
[13:41:49] <bobry-> у батареек как то клево он используется в каментах
[13:41:56] <bobry-> вроде как это janestreetовское поделие
[13:42:08] <bobry-> блопсто not found
[13:43:43] shaggie вошёл(а) в комнату
[13:43:46] <Typhon> bobry-: а что ты хочешь читать про камль и квикчек? про сам квикчек есть несколько статей полноценный, на х-ль вики можно найти. в камле просто имплементация того же самого
[13:44:08] <bobry-> hrm hrm, я думал в камле что то свое
[13:44:10] <Typhon> + надо посмотреть на батареековский qc и может в капуте каком тоже есть
[13:44:25] <Typhon> ну что-то своё, потому что тайпклассов нет
[13:44:32] <Typhon> и можно либо на модулях либо на фвп сделать
[13:44:47] <ermine> а почему вы не используете ни батареек ни janestreet core?
[13:45:05] <ermine> только смотрите как на картины
[13:45:10] <f[x]> а почему ви спгашиваете?
[13:45:41] <ermine> да вот удивляет
[13:45:44] bobry- использует core, совсем чуть чуть :)
[13:45:59] <ermine> и еще не видела ни одной сторонней либлы, которая бы хотела в депендсах эти либлы
[13:46:18] <bobry-> тут @ymisnki в твиттерах слил что они свой lwt релизить собираются
[13:46:24] <bobry-> если вдруг кто не видел
[13:46:52] <gds> bobry-: а вот чего не умею, то писать не буду.  Сам хочу почитать.
[13:47:08] <bobry-> gds: ты oUnitом тестируешь?
[13:47:19] <Typhon> coq'ом ^__^
[13:47:23] <bobry-> :D
[13:48:00] <gds> лол, coq, да!
[13:48:02] <ermine> gds: ты уже дочитал теорию категорий?
[13:48:28] <Typhon> я, кстати, начал читать "model checking" от юрия карпова, весьма интересно, хочу попробовать применить на практике, и вот про это точно хочется написать (ежели, конечно, получится ^_^ )
[13:49:08] <gds> на самом деле -- тестирование не наладил нормально.  Изредка вставляю функции типа value run_tests () = ... и их вызовы, либо
value () = run_tests ();
либо не вызовы:
value _ () = run_tests ();
[13:49:19] <ermine> gds: а TAPL уже прочитал?
[13:49:23] <gds> ermine: всю, от корки до киркорки!
[13:50:11] <gds> TAPL -- давно, но читал скорее ознакомительно, типа "ишь, смотри, чо вытворяет!".  некоторые главы и всё, что по зависимостям приплыло, изучил тщательно, однако.
[13:50:27] <gds> Typhon: а что это за "model checking", можешь в двух словах рассказать?
[13:50:35] <gds> ну, в паре предложений, вернее.
[13:51:08] <f[x]> аргх, http://twitter.com/#!/garriguejej
[13:52:45] <Typhon> gds: верификация програм, которые "реактивные", то есть висят постоянно и с миром общаются,  а не просто как вход->программа->выход работают, с помощью темпоральных логик. программа рассмативается как цепочка состояний и переходов и таким образом верифицируется. автор утверждает, что можно это делать автоматически (в отличие от других методов верифицкации). модель чекинг — проверка того, что система является моделью (условно говоря, тем чем нужно).
[13:53:30] <Typhon> f[x]: почему он пишет на непонятном языке? :-) кстати по тегу #ocaml очень много иероглифов
[13:54:15] <f[x]> Typhon: французы такие французы!
[13:55:17] <Typhon> кстати, в модель чекинге тоже французы, типа крутые перцы. грекофранцуз сифакис получил тьюринга даже за вклад. верифицируют технику, которая на самолеты в сухом ставится
[13:57:06] <ermine> жуть
[13:58:18] <f[x]> гугло nihon'ский язык переводит ужасно, смысл не восстанавливается
[13:58:43] <gds> Typhon: понял идею.  Интересно, но не знаю, как загонять свои пограммы в такую штуку.  Надо будет подробнее почитать.
[14:00:31] <f[x]> > I love using monads for concurrent programming, lwt-style. But error handling and space leaks can be awfully subtle.
> I think it's a fundamental problem: concurrency leads to complex control flow, which makes error handling hard.
+1
[14:03:20] <gds> error handling -- это он про что?  у меня всё работает!111  IO.catch ловит всё.
space leaks -- на то и итераты, чо.
complex control flow лично я буду закатывать (и уже чуть-чуть закатываю) в отдельные "логические процессы".  А error handling этих процессов -- видимо, буду что-то типа "supervisors" делать.  То есть, unix-way получается: всё выделяется в логически-обособленные куски со штатным образом общения.
[14:07:52] <f[x]> > it's ironic (sad?) that the new hot GHC parallel GC borrows technology from a 1993 GC for Caml Light
[14:08:24] <f[x]> код выглядит как макароны
[14:08:25] <gds> а разве там был параллельный мусоргский?
[14:09:07] <f[x]> во-вторых приколы от того что код выглядящий как tail-rec на самом деле нет
[14:10:22] <gds> про макароны -- если из твёрдых сортов, то ок.
про tail-rec -- недопонял.  кое-где встречался с проблемой, но как-то решал, и вроде так же, как в классическом безмонадном коде.  напомнишь?
[14:14:23] <f[x]> ну да, проблема та же, я про то что оно везде одинаково паршиво
[14:16:56] <f[x]> имеется в виду видимо http://gallium.inria.fr/~xleroy/bibrefs/Doligez-Leroy-gc.html но там не паралельный gc
[14:17:10] <f[x]> так что хз на что он намекает
[14:18:15] <f[x]> ужс - http://www.freepatentsonline.com/6289360.html
[14:28:38] ygrek вошёл(а) в комнату
[14:31:46] <gds> как структурировать мои блогпосты на камлунити -- на глагне добавить "посты гдса" со ссылкой на страницу с их списком-ссылками?  хз, не криво ли?
[14:33:05] <Typhon> а ты не тэгал их как-то особо? можно было бы на тэг ссылку дать
[14:34:18] <gds> не тэгал, да и смысла в этом мало -- список иметь наверное лучше.  потэгать сейчас -- не проблема, но вроде не нужно.
[14:34:44] <gds> да и вообще, я могу писать про камло, но считать это не очень годным для публикации.
[14:37:13] <Typhon> можно потэгать ocaml_articles, например. а на камлунити можно сделать "статьи/посты про окамль" ссылкой на страницу, где сделать "gds: и список постов". если появится ещё кто-то добавим ещё автора.
[14:37:15] <gds> как вариант -- завести тег типа "camlunity", отдельный, типа "пост для людей"
[14:38:29] <Typhon> тэг камлунити мне по нраву, можно и автоматический аггрегатор сделать
[14:38:32] <gds> а вообще, как-то тяжеловесно это получается -- чтобы добавить пост/ссылку, надо обновлять репку, редактировать хтмл, пушить.
[14:39:42] bobry- за static git-powered wiki
[14:39:52] <bobry-> взять какой нить jekyll или шо там щас модно
[14:39:57] <bobry-> и пусть рисует наш md
[14:41:34] <ermine> пандок
[14:41:45] <bobry-> ermine: не православно же
[14:41:51] <ermine> всё же на более функциональном языке чем жекуль
[14:42:11] <bobry-> хотя, если это будет выглядеть приятнее чем ocamldoc -- я за :)
[14:43:34] <ermine> можно еще из ocsiblog выдрать, там всё просто
[14:44:50] bobry- там код не понравился <_<
[14:45:13] <bobry-> в пандоке все кошерней выглядит (все что парсит маркдаун по крайней мере :)
[14:46:29] <ermine> ну давай лучше ваять веб на хаскеле
[14:46:41] <ermine> там уже многое готовое есть
[14:47:01] komar зевнул.
[14:47:04] <ermine> хаскиль вообще язык самый укомплектованный
[14:47:14] <bobry-> ermine: продолжая :0
[14:47:17] <bobry-> *продолжай
[14:47:30] <komar> Допилить свое поделие для общего пользования, что ли?
[14:47:37] <bobry-> komar: md?
[14:47:47] <bobry-> я только твой textile читал
[14:47:50] <komar> Но тогда придется убирать sed из makefile.
[14:47:54] <komar> Не, не буду.
[14:52:25] <komar> Кстати, кто там все грозился написать парсер маркдауна?
[14:53:02] <bobry-> я грозился, по erlang external term format борю
[14:53:09] <bobry-> там все попроще, for starters
[14:53:30] <komar> Ответ неверный, ermine грозилась.
[14:53:52] <bobry-> о, круто
[14:54:37] <ermine> <_<
[14:54:40] <ermine> >_>
[14:54:44] bobry- вышел(а) из комнаты
[14:56:02] bobry- вошёл(а) в комнату
[14:56:34] bobry- вышел(а) из комнаты
[14:56:43] bobry- вошёл(а) в комнату
[14:59:56] ermine теперь в своем коде применяет констркуцию include Module with type ... и восхищается ее мощью
[15:11:27] <gds> в общем, "и лучше выдумать не мог" -- добавил посты на камлунити.
[15:13:09] <f[x]> > а вообще, как-то тяжеловесно это получается
это должно стимулировать появление какого-то кодэ который решит эту проблему :)
[15:14:57] <Typhon> This webpage is not available — про дримвидтх
[15:17:50] <gds> у тебя там фильтр мата может стоит?
[15:18:08] <gds> проверил, всё загружается, все 5 статей оттуда.
[15:18:18] <gds> "публично-доступные" все.
[15:18:56] <Typhon> It's just you. http://www.dreamwidth.org <http://www.dreamwidth.org/> is up. сетевое значит что-то
[15:21:26] <gds> о да.
[15:27:50] bobry- вышел(а) из комнаты
[15:29:31] bobry- вошёл(а) в комнату
[16:10:18] ermine скулит над типами
[16:12:20] <ermine> вот понадобилось в include Module with type 'a t засунуть двухпараметрический тип
[16:13:08] <gds> покажи конкретику.
[16:13:42] <ermine> а вот не покажу, потому что немедленно обидишься!
[16:14:14] <gds> ок, не показывай тогда, пожалей мои чуйства.
[16:14:46] <ermine> дадад
[16:14:59] <ermine> правда в итоге все равно обидишься, если "оно" у меня получится
[16:17:13] <gds> тогда показывай.
[16:17:45] gds вспомил, как уламывал одноклассниц в средних классах
[16:19:32] <gds> ermine, ну покажи!
[16:19:33] ermine продолжает скулить в кулачок
[16:22:59] <f[x]> да что мы там не видели!
[16:27:48] <ermine> если в хваскиле легко сделать data M a b = ... а потом type B a = M a, то как же это в квамле?
[16:28:26] <gds> type b 'a 'b = m 'a 'b?
[16:29:27] <ermine> абстрагировать?
[16:29:39] Kakadu вышел(а) из комнаты
[16:29:57] <ermine> не
[16:30:48] <ermine> надо поменять дизайн, а все из-за того, что type char t = string плохо получается
[16:31:24] <ermine> или точнее там где у 'a t нет ничего 'a в конкретизации t
[16:31:50] <ermine> type 'a t = { buf: string} например
[16:32:52] <ermine> зато же клево в val get : 'a t -> 'a
[16:33:57] <gds> а что плохого с type char t = string?  ну, магея будет, понятно, а ещё?
[16:36:44] <ermine> шняга с not included into S
[16:37:40] <gds> не понял, что конкретно делается, поэтому ничем не могу помочь.
[16:38:02] <ermine> module type S = sig type 'a t val get : 'a t -> 'a end
[16:38:32] <ermine> чшта мне туда строку не получается втиснуть
[16:38:51] ygrek вышел(а) из комнаты
[16:39:11] <gds> а как присовываешь?
[16:43:40] <ermine> А КАК НАДО?
[16:44:24] <ermine> ой
[16:44:26] <gds> а что хочешь в итоге?
[16:44:29] <ermine> капс чота нажался
[16:44:58] <ermine> в итоге чтобы соответствовало сигнатуре
[16:45:28] <ermine> struct type char t = string let get t = t.[0] end оно не жует
[16:45:51] <gds> то есть, модуль хочет type 'a t, а ты ему конкретный type char t даёшь?
[16:46:19] Kakadu вошёл(а) в комнату
[16:47:06] <ermine> да, мне нужен параметрр выносить, чтобы по нему типизировать дальше снаружи модуля
[16:48:48] <ermine> ладно, возьму чаю и подумаю и поскулю в своем уголке
[16:50:00] <ermine> я думаю параметризовать по всему t целиком
[16:54:01] <gds> предлагаю подумать, как оно будет работать в целом, если дадут не твой type char t, а что-то другое.
[17:12:18] ermine скулит дальше в кулачок, чтобы не проболтать страшных тайн
[17:13:36] <ermine> gds: а как получить type char t?
[17:27:01] <ermine> параметрические типы - это такой гимор
[18:15:22] <f[x]> http://node-js.prcn.co.cc/#rus
[18:15:29] <f[x]> даёшь пятницу
[18:16:54] <bobry-> с подачки лапшина вестимо
[18:17:26] <bobry-> nodejs конечно overhype и далеко не фонтан с архитектурной точки зрения, но такие посты не делают эрлангерам чести imo
[18:18:01] <f[x]> необоснованные обобщения не делают чести никому :)
[18:18:52] <bobry-> «без плясок с бубном, не снившихся питоновцам, задействовать более одного ядра;» бла бла ...
[18:20:40] <ermine> bobry-: это такие слухи или по опыту?
[18:21:34] <ermine> екмаскрипт рульный язык, похож на функциональный и без глупостей со строгой типизацией
[18:22:20] <ermine> вот тут вы не можете мне сказать как конкретизировать 'a t в char t
[18:24:43] <Typhon> автор ссылки вроде nponeccop @ lj ?
[18:34:44] <bobry-> ermine: про питон та? да обычное нытье людей которые (как правило) особо на нем не писали
[18:35:33] <bobry-> а в камле низя как в хацкеле написать (x :: Int) например?
[18:37:14] <ermine> x : int
[18:37:53] bobry- вышел(а) из комнаты
[18:39:23] bobry- вошёл(а) в комнату
[18:39:58] <bobry-> ну в хацкеле то можно это в любом месте сделать
[18:40:54] <f[x]> в камле тоже
[18:41:20] <ermine> let x : int = 10
[18:58:06] <gds> э, пипол, вы же х-ню обсуждаете.  раздвиньте глоза как стикло.  о чём вы вообще?  подумайте толком.  есть системы типизации, модели вычислений, какие-то их смеси.  вы чего вообще?  говорить, что "x : int" <=> "можно сделать type char t" -- это вообще как?
[19:00:14] <f[x]> никак нет
[19:01:10] <bobry-> gds: речь о конкретизации полиморфного типа
[19:01:31] <gds> bobry-: возьми и конкретизируй.  Ты же мужик блеять.
[19:03:02] bobry- вышел(а) из комнаты
[19:03:33] <f[x]> конвергенция реакций изоморфных разумным мыслеформам идей, так надо
[19:06:45] bobry- вошёл(а) в комнату
[19:11:57] bobry- вышел(а) из комнаты
[19:12:06] bobry- вошёл(а) в комнату
[19:26:12] zinid вышел(а) из комнаты
[19:29:15] bobry- вышел(а) из комнаты
[19:50:04] <Kakadu> а есть какой-нибудь синтаксис, чтобы можно было
# type t = { a:int};;
# let x = {a=5};;
# let y = x with a=0;;
val y : t = {a=0}
[19:50:36] Typhon вышел(а) из комнаты
[19:50:47] <komar> Да.
[19:51:31] <komar> # let y = { x with a = 1};;
Warning 23: this record is defined by a `with' expression,
but no fields are borrowed from the original.
val y : t = {a = 1}
[19:51:57] <Kakadu> О_О, спасибо
[19:52:00] <komar> Вы только посмотрите, какой компилятор умный.
[20:42:12] bobry вошёл(а) в комнату
[21:19:06] ygrek вошёл(а) в комнату
[22:16:41] shaggie вышел(а) из комнаты
[22:49:21] <ermine> гм, а в чем разница между && и & ?
[22:57:12] <Kakadu> ни в чем
[23:04:47] <ermine> а фдруг?
[23:05:45] <Kakadu> ну тогда тебе в pervasives.ml
[23:08:55] <ermine> а там одинокая палочка тоже есть?
[23:10:12] <gds> разница таки есть.
[23:10:44] <ermine> какая?
[23:12:31] <Kakadu> одинокой не виже
[23:12:36] <Kakadu> не вижу*
[23:15:04] <ermine> шота там gds мутит
[23:16:15] <gds> разница вроде в приоритете/ассоциативности.
[23:17:53] <Kakadu> а я раньше думал, что raise --- ключевое слово
[23:19:03] <ermine> смог переопределить?
[23:19:25] <Kakadu> просто нашел определение в исходниках
[23:19:40] <ermine> а
[23:20:08] <komar> Гм, никогда не задумывался.
[23:21:18] shaggie вошёл(а) в комнату
[23:21:24] <ermine> да, надо иногда перечитывать мануал по камлу, можно не вслух
[23:25:00] <komar> Я один раз вслух читал.
[23:25:02] <komar> А, рассказывал уже.
[23:25:46] <ermine> ну вот я разрешаю не вслух
[23:26:41] ermine погуляла и теперь опять мучается с типами
[23:27:01] <ermine> теперь хочется параметризованный параметр
[23:36:26] Kakadu вышел(а) из комнаты
[23:41:27] <ygrek> & - deprecated
[23:41:28] gds вышел(а) из комнаты
[23:41:30] gds вошёл(а) в комнату
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!