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

GMT+3
[00:53:02] arhibot вышел(а) из комнаты
[00:57:12] ygrek вышел(а) из комнаты
[00:58:16] vshender вошёл(а) в комнату
[01:02:17] vshender вышел(а) из комнаты
[01:33:04] shoroh-net вошёл(а) в комнату
[01:34:17] Kakadu вышел(а) из комнаты
[01:40:56] ftrvxmtrx вышел(а) из комнаты
[01:52:00] shoroh-net вышел(а) из комнаты
[02:38:49] komar вышел(а) из комнаты
[02:50:43] Typhon вышел(а) из комнаты: offline
[02:50:52] Typhon вошёл(а) в комнату
[03:23:18] ermine вышел(а) из комнаты
[04:12:15] zert вышел(а) из комнаты
[04:48:49] Typhon вышел(а) из комнаты
[06:40:34] komar вошёл(а) в комнату
[06:40:40] komar вышел(а) из комнаты
[09:32:49] gds вошёл(а) в комнату
[09:52:15] ygrek вошёл(а) в комнату
[09:57:15] vshender вошёл(а) в комнату
[10:02:48] gds вышел(а) из комнаты
[10:16:25] gds вошёл(а) в комнату
[10:47:06] vshender вышел(а) из комнаты
[10:47:51] gds вышел(а) из комнаты
[11:01:39] Kakadu вошёл(а) в комнату
[11:03:43] serp256 вошёл(а) в комнату
[11:28:57] gds вошёл(а) в комнату
[11:32:40] <gds> а подскажите, как бы мне завернуть printf-печать в значение с типом res 'a 'e = `Ok of 'a | `Error of 'e, чтобы по умолчанию выдавало `Ok ()?  Пробовал как-то так:
value res_printf fmt : res _ exn =
try Printf.ksprintf (fun str -> (output_string stdout str; `Ok ()) fmt
with [e -> `Error e];
но при использовании ругается, что "функция применена с слишком большому количеству аргументов" -- то есть, что-то криво сделал.
[11:34:06] <gds> (инет у меня сейчас мобильный и по трафику, поэтому я периодически буду заходить в инет на недлинные промежутки времени, но моё отсутствие не означает, что мне неинтересно решение этой проблемы)
(нормальный инет проведу на днях, тогда же и вику подниму)
[11:37:09] <gds> (вариант с убранным ограничением типа (res _ exn) тоже не работает, вариант с "(printf fmt; `Ok ())" тоже не работает, а вот вариант "`Ok (Printf.printf ...)" работает, но это никак не удобно)
[11:44:17] <ygrek> let p fmt = Printf.ksprintf (fun s -> try print_endline s; `Ok with e -> `Error e) fmt;;
[11:44:29] <ygrek> а снаружи никак, это же не применённая до конца функция
[11:44:39] <ygrek> ksprintf fmt в смысле
[11:49:50] gds вышел(а) из комнаты: Replaced by new connection
[11:49:51] gds вошёл(а) в комнату
[11:53:51] serp256 вышел(а) из комнаты
[11:54:54] <gds> ygrek: эх я, и с "не до конца", и с сигнатурой налажал.  Благодарю, теперь всё типизируется.
А вообще, сам по себе ksprintf не должен кидать исключения (за исключением переполнения строки)?  А то, получается, если try-with вокруг только output_string, но не ksprintf, то исключения самого ksprintf не словятся.
[11:58:38] <ygrek> не должен
[12:13:05] abiogenesis вошёл(а) в комнату
[12:14:09] abiogenesis вышел(а) из комнаты
[12:16:54] gds вышел(а) из комнаты
[12:18:18] gds вошёл(а) в комнату
[12:30:33] gds вышел(а) из комнаты: Replaced by new connection
[12:30:34] gds вошёл(а) в комнату
[12:40:08] ermine вошёл(а) в комнату
[12:40:53] arhibot вошёл(а) в комнату
[12:50:45] gds вышел(а) из комнаты
[12:53:49] zert вошёл(а) в комнату
[12:57:09] Borman вошёл(а) в комнату
[12:58:56] <Borman> Прошу прощения за некоторый оффтоп, но не подскажете, как в SML явно указать тип вещественной константы? Компилятор ругается на то, что она real, а не R.real, как мне надо (R — аргумент функтора)
[13:02:36] <ygrek> наверное надо указать связь между R.real и real
[13:03:38] <Borman> ygrek: поясни
[13:04:35] <ygrek> real не абстрактный тип?
[13:05:28] <ygrek> точнее не так
[13:05:53] <ygrek> раз real это элемент параметра функтора то для модуля это абстрактный тип
[13:06:29] <ygrek> если ты хочешь использовать константу в коде модуля с типом из R - сделай в R функцию of_real : real -> R.real
[13:06:42] <ygrek> либо вынеси real из R если оно всегда real
[13:06:46] <Borman> ок, сейчас попробую
[13:07:16] <ygrek> либо скажи что это один тип при объявлении функции - в камле было бы module Make(R:T) : S with type R.real = real
[13:07:28] <ygrek> но это эквивалентно выносу из R
[13:07:33] <ygrek> если я правильно понял
[13:07:39] <ygrek> sml я не знаю если что :)
[13:11:36] <Borman> хм
[13:11:52] <Borman> не совсем понял, как применить это знание...
[13:11:54] <Borman> http://paste.org.ru/?kaqvn2
[13:12:17] <Borman> если будете пинать ногами за такое, приветствую, ибо я sml только начал изучать
[13:15:25] f[x] вышел(а) из комнаты
[13:15:52] f[x] вошёл(а) в комнату
[13:23:39] Kakadu вышел(а) из комнаты
[13:26:32] Kakadu вошёл(а) в комнату
[13:27:55] Kakadu вышел(а) из комнаты
[13:32:12] Kakadu вошёл(а) в комнату
[13:34:18] Kakadu вышел(а) из комнаты
[13:34:47] Kakadu вошёл(а) в комнату
[13:34:56] Kakadu вышел(а) из комнаты
[13:35:43] <ermine> f[x]: input_value/output_value - дорогие функции для базовых типов?
[13:36:24] <ermine> может применить их чтобы можно было разнотипные переменые сувать в Map
[13:52:37] ftrvxmtrx вошёл(а) в комнату
[13:54:47] <ygrek> ermine: чтобы разнотипные переменные в map сувать - питон
[13:56:26] <ygrek> Borman: не знаю, тут наверное какие-нибудь особенности sml, поищи примеры
[13:57:24] <Borman> да я вот что-то поискал, кода на SML вообще почти нет, а конкретно своего случая я не вижу.
[14:04:25] <Borman> в общем, видимо, проще забить на синоним к типу real
[14:04:43] <ermine> ygrek: да мне было бы интереснее без мапа, только вот не нашла как в рантайме генерить функцию с заданной сигнатурой
[14:08:11] ermine подумала - а может вместо мапа юзать рекорд, там-то типы можно оставить...
[14:10:52] <ermine> Borman: а есть особые причины предпочитать SML?
[14:11:06] <Borman> ermine: особо нет
[14:11:21] <ermine> просто интерес?
[14:11:24] <Borman> да
[14:12:10] <ermine> да, надо бы какнить узнать как цамлить на sml :)
[14:12:22] <Borman> то есть раньше никогда не писал на функциональных языках со строгой типизацией, вот и выбрал
[14:12:41] <Borman> хотя сейчас вижу, что он какой-то дохловатый, в отличие от OCaml
[14:12:48] <ygrek> Borman: тогда выбирай камль :)
[14:12:49] <zert> гггг
[14:13:01] <zert> камл тоже дохлый
[14:13:09] <Borman> zert: не настолько
[14:13:12] <zert> только в нём опарышы шевелятся, вот и кажется, что он живой
[14:13:26] <Borman> тогда непонятно, а кто живой-то?
[14:13:26] <zert> а смл опарышы уже сожрали, остался один остов
[14:13:32] <ermine> обычно начинают с хаскиля
[14:13:44] <zert> им и заканчивают
[14:13:58] <ermine> а sml щас в некоторых вузах ковыряют в сочетании с .net
[14:13:59] <Borman> ну я его как-то пока побаиваюсь в плане, что там совсем аццкий матан
[14:14:00] <zert> ибо писать приходится на C#
[14:14:22] <Borman> ermine: хм, а почему тогда SML.Net, а не F#?
[14:15:31] <ermine> Borman: потому что первое появилось намного раньше второго
[14:15:48] <ygrek> да ну? f# в 2002 начал шевелиться
[14:15:49] <ermine> а вузы российские никогда не были передовыми в этой области
[14:16:14] <ermine> они влачат свое существование с опозданием на десятки лет
[14:17:05] <Borman> мде...
[14:17:25] <zert> в вузах преподы, которые ни дня не разрабатывали индустрийно
[14:17:33] <zert> какой от них уровень можно ожидать?
[14:17:34] <ermine> на intuir.ru валяются какие-то лекции
[14:17:43] <ermine> вот я там видела лекции по sml + .net
[14:18:03] Typhon вошёл(а) в комнату
[14:18:04] <Borman> zert: точнее, таких крайнее меньшинство
[14:18:21] <zert> Borman: да, в следовых количествах
[14:18:26] <zert> что можно пренебречь
[14:19:07] <zert> у нас один препод всё рассказывал про форт, структуру памяти в х86 и ассемлер для него же, типа зная всё это, можно сделать реально всё
[14:19:13] <zert> и больше ничего не надо
[14:19:27] <zert> ещё его фраза: "я знаю все языки, даже те, которых ещё нет"
[14:19:51] <zert> в реальности же ничего, кроме форта, асма, сишечьки и трубопаскаля не знает
[14:19:54] <Borman> ...только писать на них не умею
[14:19:57] <zert> гггг
[14:20:24] <zert> ещё говорит, что в барнауле каждый второй - программист. в кого пальцем ни ткни в толпе, попадёшь в программиста
[14:20:44] <zert> беседовал я с этими пограмистами — их разве что пользователями борланда можно назвать
[14:20:53] <zert> вот такая вот беда
[14:20:56] <Typhon> может принтеры чинить умеют? :)
[14:21:02] <zert> вряд ли
[14:21:27] <zert> человек мало того, что ничему научить не может, так ещё и не догадывается об этом
[14:22:11] <zert> вот и смотрят потом дети с открытыми ртами на ерлангие, искренне не понимая, для чего он нужен, ибо окошки на нём не рисуют
[14:22:22] zert читал доклад осенью перед ними
[14:22:44] <ermine> надо учиться на открытых курсах MIT
[14:22:58] <zert> надо о них ещё знать
[14:23:03] <zert> люди реально не умеют учиться
[14:23:20] <zert> информацию дофига откуда можно получать
[14:23:30] <zert> но они не знают, что это можно, и что нужно
[14:23:43] <zert> типа, универ закончил — всё, готовый специалист
[14:24:06] <zert> а потом ноют во всяких комментах, что никто на работу не хочет брать молодого специалиста, всем с опытом нужен
[14:24:30] <ermine> zert: информации дофига, но она мало годится для того, чтобы начать учиться, нужен какой-то говорун, который дает основы и указывает путь развития познаний
[14:24:30] <zert> чёт меня взяли с третьего курса, а с четвёртого уже на фуллтайм свалил
[14:24:43] <zert> ermine: вот, нужен человек, который научит учиться
[14:24:50] <zert> а таких людей среди преподов нет
[14:25:00] <ermine> zert: вон википедия не годится для того, чтобы начать по ней изучать физику
[14:25:02] <zert> они искренне уверены, что дают очень полную информацию
[14:25:14] <arhibot> zert: это ни о чем не говорит
[14:25:21] <zert> уикипедие вообще для поверхностного обзора только пойдёт
[14:25:51] <zert> преподам тоже надо постоянно учиться, особенно в такой отрасли, как ит
[14:26:11] <zert> ибо то, что знал 10 лет назад, уже устарело и не хватит для жизни
[14:26:39] <arhibot> zert: закрыть 90% вузрв
[14:27:00] <Borman> arhibot: зачем так жестоко, просто назвать техникумами
[14:27:03] <zert> нет, просто финансировать хорошо и процентов 80 студентов убрать
[14:27:13] <zert> да, и развивать техникумы
[14:27:20] <zert> в вузах дофига народу левого
[14:27:22] <ermine> википедия хороша когда есть базовые знания и надо где-то набрать некоторое количество терминов, чтобы копать в узкой теме
[14:27:30] <zert> как среди преподов, так и среди скубентов
[14:27:45] <zert> а самые бестолковые скубенты после вуза ещё в нём и остаются
[14:27:50] <zert> ибо некуда идти
[14:27:54] <arhibot> zert: глупость
[14:27:57] <zert> и получается эскалация глупости
[14:28:06] <arhibot> zert: у меня знакомый пошел в аспирантуру и работает в гугле
[14:28:14] <zert> исключения бывают, конечно же
[14:28:27] <zert> у меня с курса человек 10 остались, из них только один действительно толковый
[14:28:36] <zert> из него получится годный препод
[14:29:05] <zert> да и работать в гугле — моветон
[14:29:06] <zert> гг
[14:29:54] <arhibot> zert: да?
[14:30:06] <ermine> а бывают репетиторы в этой области?
[14:30:09] <zert> в общем, из-за урезания финансирования вузов и модности на ВО, вузы скатились в сраное говно
[14:30:16] <zert> ermine: в какой?
[14:30:38] <ermine> zert: в программистской, алгоритмы, технологии
[14:30:46] <zert> arhibot: ну я бы не пошёл. сидеть всё время в офесе, жить в офесе — нафиг надо
[14:30:52] <zert> а там такой подход пропонуется
[14:30:52] <ermine> zert: по физике, математике, языкам - бывают
[14:31:03] <zert> ermine: не встречал
[14:31:41] <ermine> хехе
[14:31:54] <zert> чтобы взять репетитора, надо понимать, что нужен репетитор
[14:31:59] <ermine> а проектные манагеры - это не то?
[14:32:10] <zert> а у нас как: купил компутер — всё, мегогуру сразу стал
[14:32:15] <zert> не, это не то
[14:32:25] <zert> ПМ не обучает, а заставляет работу работать
[14:32:38] <zert> стажоры — это тоже не совсем обучаемые
[14:33:10] <zert> хотя, из-за доступности устроиться куда-нибудь стожором, спрос на репетиторство может и не высокий
[14:33:19] <zert> зачем платить деньги, когда можно их получать?
[14:33:40] <zert> мастер-классы разве что можно с натяжкой назвать репетиторством
[14:46:55] arhibot вышел(а) из комнаты
[14:48:48] Borman вышел(а) из комнаты
[14:52:55] Borman вошёл(а) в комнату
[15:00:36] gds вошёл(а) в комнату
[15:03:39] <gds> ermine:
> разнотипные переменые сувать в Map
а что дальше с ними делать?  ибо есть варианты.
[15:26:48] gds вышел(а) из комнаты
[15:35:25] gds вошёл(а) в комнату
[15:41:00] gds вышел(а) из комнаты: Replaced by new connection
[15:41:02] gds вошёл(а) в комнату
[16:00:23] gds вышел(а) из комнаты
[16:19:31] gds вошёл(а) в комнату
[16:31:39] Typhon вышел(а) из комнаты: Replaced by new connection
[16:31:42] Typhon вошёл(а) в комнату
[16:33:27] Typhon вышел(а) из комнаты: Replaced by new connection
[16:33:31] Typhon вошёл(а) в комнату
[16:33:44] Typhon вышел(а) из комнаты
[16:34:01] Typhon вошёл(а) в комнату
[16:35:12] komar вошёл(а) в комнату
[16:36:56] Typhon вышел(а) из комнаты: Replaced by new connection
[16:37:00] Typhon вошёл(а) в комнату
[16:38:41] Typhon вышел(а) из комнаты: Replaced by new connection
[16:38:44] Typhon вошёл(а) в комнату
[16:40:58] Typhon вышел(а) из комнаты: Replaced by new connection
[16:41:01] Typhon вошёл(а) в комнату
[16:42:23] gds вышел(а) из комнаты
[16:49:46] gds вошёл(а) в комнату
[16:56:53] <ermine> gds: я обломалась с идеей генерации функции в рантайме, которой суешь готовые аргументы, сгенеренные при компиляции, поэтому искала пути передавать аргументы, завернув во что-нить
[16:57:15] <ermine> gds: но не хочется обертывать в String str | Int int ...
[16:58:46] <ermine> gds: мне кажется, что генерить функцию в рантайме и передавать ей аргументы - такая же безопасность, как гонять маршалированные данные через какой-нить сторадж
[17:13:57] ermine надеется на гениальные идеи gds
[17:14:00] gds вышел(а) из комнаты
[17:14:45] <ermine> надежда позорно смылась
[17:15:08] ygrek вышел(а) из комнаты
[17:15:18] ygrek вошёл(а) в комнату
[17:26:15] <zert> пиши на лиспе
[17:29:00] <ermine> мне там еще светит реализовать dsl с простой арифметикой
[17:29:20] <ermine> чтобы можно было if $a = 1 then "abc" else "abcs" и тд
[17:30:17] ygrek вышел(а) из комнаты
[17:30:51] <ermine> только вот интересно как $a привязать к чему-то материальному
[17:31:19] gds вошёл(а) в комнату
[17:31:44] ermine прикалывает gds булавкой к чатику
[17:33:39] <zert> sets affilation (incast)
[17:34:16] <ermine> таки мап из-за dsl удобнее чем рекорд
[17:37:18] <gds> ermine: код генеришь?  если да и если "ключи" разные и "идентификаторы", бери объекты, там не надо генерить конкретные типы.
[17:38:16] <gds> а насчёт String str | Int int -- смотри, если типа-printf, то может и можно.  А если расширения типа %a, %t, как у окамла, тогда придётся подумать, ибо там типы весьма неконкретные.
[17:38:44] <gds> а вообще -- cast summon "url from oleg's works", ща
[17:39:21] <ermine> gds: ну ты помнишь, что я щас страдаю пародией на gettext, но я щас в идеях уже от него ушла чуток в сторону и дальше
[17:40:04] <gds> ermine: http://okmij.org/ftp/typed-formatting/  -- там смотри "GADT.ml", там в примерах как раз printf.  Но смотри дальше, там очень-очень много разных подходов, отличающихся в мелочах, но в серьёзных.
[17:40:31] gds ждёт, пока моск ermine взорвётся от этой ссылки, а потом спокойно выйдет из чата.
[17:40:46] <ermine> gds: там требуется из форматных строк генерить функции и как-то находить их в свалке в памяти, щас я хочу хранить распарсенные форматные строки в array
[17:40:58] <ermine> каждый array - на один язык
[17:41:33] <ermine> ну брать форматные строки по индексу, который генерится при компиляции, это уже детали реализации
[17:41:49] <ermine> вот гораздо сложнее в каком виде им передавать из кода значения
[17:42:08] <gds> про array на язык -- идея хорошая по производительности.  Однако если будешь пробовать динамическую загрузку переводов -- думай, тебе dynlink виднее.
[17:43:41] <ermine> gds: из-за генерируемого индекса всё равно придется "вручную" пропалывать подгружаемый язык
[17:43:52] <ermine> зато потом не надо возиться с хэшами
[17:44:56] <ermine> gds: и сейчас у меня форматная строка такого вида "This server $(server) works", где $server - такое же имя переменной, как в коде
[17:46:05] <ermine> тогда надо делать склейку трех терминов String "This server "; Var server; String " works"
[17:46:34] <ermine> я не понимаю как связать $server с server
[17:47:01] <ermine> поэтому подумала про мап с маршалированными значениями, чтобы тупо брать по имени
[17:47:14] <ermine> мап генерится при компиляции
[17:47:33] <ermine> gds: задавай вопрос, если чо не понятно
[17:48:36] <ermine> gds: я сначала пыталась сваять функцию из комбинаторов, которая переводит список String of string, Var of string, ... в функцию, но типизация в match не дает
[18:03:03] gds вышел(а) из комнаты: Replaced by new connection
[18:03:04] gds вошёл(а) в комнату
[18:05:28] <gds> ermine: так форматная строка у тебя или комбинаторный printf?
[18:05:51] <ermine> а есть вариант не хранить в array списки токенов, а переводить в код и компилять и хранить в длинных-длинных рекордах
[18:06:18] <ermine> грузить модули можно динамически
[19:01:47] gds вышел(а) из комнаты
[20:42:36] arhibot вошёл(а) в комнату
[20:49:17] gds вошёл(а) в комнату
[21:43:40] Typhon вышел(а) из комнаты
[21:44:58] serp256 вошёл(а) в комнату
[22:19:52] zert вышел(а) из комнаты
[22:53:06] gds вышел(а) из комнаты: Replaced by new connection
[22:53:07] gds вошёл(а) в комнату
[23:20:16] gds вышел(а) из комнаты
[23:58:18] serp256 вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!