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

GMT+4
[00:06:10] ftrvxmtrx вошёл(а) в комнату
[00:10:19] <bobry> как убого в х-ле без labeled arguments
[00:10:36] <bobry> настоящие пасаны пишут f { foo = bar }, но убогости от этого не убавляется
[00:10:38] <bobry> <_<
[00:27:10] <gds> а я вот, как раз, размышлял заменить аргументы на объект/запись.  В пределах функции вызовов с одинаковыми labelled arguments было больше трёх.  Но это я хотел сделать до того, как пришла идея о том, что можно сделать проще.
[00:28:10] <gds> чем хороши объекты/записи в моём применении -- тем, что их можно создать раз и навсегда.  Кроме того, их нельзя забыть при применении частично, что сэкономило бы немного времени.
[00:28:11] <bobry> ну, может это когда то  удобно, но я бы хотел иметь выбор
[00:28:38] <bobry> gds: для частичного изменения это безусловно лучше.. только вот объектов в х-ле тоже нема :)
[00:28:56] <bobry> хоть рекорды можно менять, на том спасибо
[00:29:16] <gds> а для каких-то других вещей (то ли про барбру речь была, то ли про что) ты не хотел "больше одного способа сделать ЭТО".  впрочем, могу ошибаться.
[00:29:43] <bobry> барбара != я.п.
[00:29:54] <bobry> в барбаре мы решаем вполне конкретную задачу
[00:32:07] <gds> задачу можно решить по-разному.  на языке программирования в том числе.
не знаю, как тебя, но меня бесило, когда учительница по математике утверждала, что я неправильно решил задачу, потому что использовал ещё неизученные в школе методы.
впрочем, главное, я осветил/проявил этот вопрос.
далее по сути сказать нечего.
[00:32:50] <bobry> gds: можно, утверждение очевидное -- что в общем то не мешает ограничивать диапазон решений в каком-то конкретном случае :)
[00:32:56] <bobry> что и делала твоя учительница
[00:46:34] komar вышел(а) из комнаты
[00:55:06] komar вошёл(а) в комнату
[01:06:25] ftrvxmtrx вышел(а) из комнаты
[01:07:40] Typhon вышел(а) из комнаты
[01:08:16] ftrvxmtrx вошёл(а) в комнату
[01:08:47] ftrvxmtrx вышел(а) из комнаты
[01:08:55] Typhon вошёл(а) в комнату
[01:08:58] ftrvxmtrx вошёл(а) в комнату
[01:27:21] Kakadu вышел(а) из комнаты
[01:45:21] Typhon вышел(а) из комнаты
[01:45:46] Typhon вошёл(а) в комнату
[02:25:24] dzhon вышел(а) из комнаты
[02:37:30] Typhon вышел(а) из комнаты
[02:37:51] Typhon вошёл(а) в комнату
[02:39:47] Typhon вышел(а) из комнаты
[02:39:50] f[x] вышел(а) из комнаты: Computer went to sleep
[02:40:09] Typhon вошёл(а) в комнату
[02:40:30] Andrey Popp вышел(а) из комнаты
[02:50:55] Typhon вышел(а) из комнаты
[02:51:16] Typhon вошёл(а) в комнату
[03:09:58] Typhon вышел(а) из комнаты
[03:10:19] Typhon вошёл(а) в комнату
[03:15:02] Typhon вышел(а) из комнаты
[03:15:23] Typhon вошёл(а) в комнату
[03:18:32] Typhon вышел(а) из комнаты
[03:35:21] letrec вошёл(а) в комнату
[04:23:31] savikov вошёл(а) в комнату
[04:49:17] letrec вышел(а) из комнаты
[08:13:12] savikov вышел(а) из комнаты
[08:36:27] avtandill вошёл(а) в комнату
[08:36:43] <avtandill> свинобесовская сука
[08:37:20] <avtandill> bobry: ебать ты сука образованная
[08:38:23] avtandill вышел(а) из комнаты: QIP Infium: Спокойное общение
[10:06:57] Andrey Popp вошёл(а) в комнату
[11:03:48] bobry вышел(а) из комнаты
[11:18:43] ftrvxmtrx вышел(а) из комнаты
[11:47:20] Kakadu вошёл(а) в комнату
[11:56:22] <Kakadu> gds: пообщаешься с тобой или забиватором --- реальная печаль наступает. Пока вы троллили учлиок матетаматики я почему-то сидел тихо и решал девочкам контрольные.
[11:58:07] ftrvxmtrx вошёл(а) в комнату
[12:05:28] bobry вошёл(а) в комнату
[12:06:12] bobry вышел(а) из комнаты
[12:06:38] bobry вошёл(а) в комнату
[12:07:12] Andrey Popp вышел(а) из комнаты
[12:07:23] <bobry> Kakadu: вот уж что-что а свою учительницу по математике  я никогда не троллил :)
[12:10:04] ermine вошёл(а) в комнату
[12:18:45] <Kakadu> сижу на работе, диалог:
[12:19:39] <Kakadu> --- Ты что думаешь насчет доказательства существования Бога по Декарту?
--- ....
--- А что ты думаешь насчет доказательсва существования двойки по мат. физике?
--- Существует, но не единственна.
[12:20:55] <bobry> :D
[12:23:36] <Kakadu> bobry: а что ты думаешь насчет доказательства существования Бога по Рене Декарту?
[12:25:54] bobry почти не читал декарта, увы или к счастью :)
[12:26:03] <bobry> мне больше нытики по душе
[12:30:47] <klapaucius> Не часто приходится встречать людей, которые почти не читали Декарта. Обычно его не читают вообще.
[12:31:06] <bobry> klapaucius: ну не, я пробовал когда то — не пошел просто :)
[12:31:10] <bobry> может еще не дорос
[12:31:32] <bobry> а вот нытики пошли на ура, къеркегор, сартр, камю
[12:31:54] <Kakadu> У нас этих нытиков в билетах нет
[12:32:05] <bobry> как же так!
[12:32:19] <bobry> шо ваще экзистенциализм не затронут?
[12:32:21] <klapaucius> А почему вы считаете, что не доросли, а не наоборот, как представитель современного человечества, переросли?
[12:32:37] <Kakadu> не, не затронут
[12:32:55] <Kakadu> самое интересное что есть в предмете --- это Ницше
[12:32:58] <klapaucius> А кто у вас в билетах есть?
[12:33:43] <Kakadu> klapaucius: https://docs.google.com/document/d/1MpFAL2hP-ulasOt6ABHa9-E3JlaLrM8bFgrLvG-KdCk/edit#heading=h.1i6cs08loqvf
вторая страница
[12:34:25] <bobry> klapaucius: funny thing is — чтобы понять *что* именно совр. человечество переросло надо как минимум ознакомиться с соотв. работами :)
[12:35:20] <bobry> даже психоанализ затронули
[12:35:21] <bobry> ишь ты
[12:36:13] <bobry> klapaucius: а можно вопрос по х-лю, а то у меня в haskell@c.j.r нету войса?
[12:36:45] <klapaucius> bobry: Читать соотвествующие работы - это слишком времязатратно, да и малополезно. В философии нужно сразу читать критику или даже ответ на критику. Т.е. чтоб составить представление о работах, например, Поппера нужно сразу читать ответ на критику Поппера Томом Куном от Имре Лакатоса.
[12:37:39] <bobry> klapaucius: критику читать полезно, но не честно :)
[12:37:59] <bobry> хотя, все зависит от конечной цели — чтобы получить представление критика — ок
[12:39:02] <klapaucius> bobry: Чтоб сделать поправку на критика нужно читать критику от двух авторов. например, критику Гегеля Расселом и Поппером.
[12:39:24] <klapaucius> А вопрос по хаскелю задать, конечно же, можно
[12:41:07] <bobry> в любом случае критика это уже интерпретация,  причем чужая — интересней заиметь какую нибудь свою в процессе прочтения и потом дополнить (или сравнить) ее с понимающими товарищами. challenge :)
[12:41:42] <bobry> про х-ль, я правильно понимаю что Data.Vector не может быть ленивым? а то наивные тесты в ghci именно на это и намекают
[12:43:44] <klapaucius> bobry: Unboxed и Storable ленивыми быть не могут.
[12:44:19] <klapaucius> А если элементы вектора boxed - они, конечно, могут быть ленивыми.
[12:45:40] <klapaucius> Ну и понятно, что память под ссылки на все санки этих лифтнутых значений сразу выделяется.
[12:46:14] <bobry> это понятно ага
[12:46:42] <bobry> стало быть обычный Data.Vector должен быть ленивым? не Unboxed / Storable?
[12:50:43] <klapaucius> Ну да. Например:
Prelude Data.Vector> let v1 = fromList [1,2,undefined]
[12:51:29] <bobry> хм, и правда — спасибо
[12:55:53] <klapaucius> Это, впрочем, не доказательство, потому как fromList может и не вычислиться еще. так, я дума, нагляднее и убедительнее:
Prelude Data.Vector> :set -XBangPatterns
Prelude Data.Vector> let !v3 = fromList [1,2,undefined]
Prelude Data.Vector> :print v3
v3 = Data.Vector.Vector 0 3 <array>
[12:57:19] <bobry> я head на него сделал — вполне доказательство :)
[13:04:36] <klapaucius> bobry: Да, но есть нюансы. При включенной оптимизации никакого вектора в результате вычисления выражения head $ fromList [1,2,undefined] вообще не должно создаваться.
[13:12:57] <klapaucius> Такой вот фокус:
module Main (main) where
import qualified Data.Vector.Unboxed as U
main = print . U.head . U.fromList $ [1::Int,2,undefined]
Скомпилированный с оптимизацией (-Odph) выведет 1, а без нее - исключение.
[13:12:57] <bobry> klapaucius: спасибо!
[13:15:51] <f[x]> и это не считается багом?
[13:16:18] <klapaucius> f[x]: нет, не считается.
[13:16:29] <f[x]> хм
[13:17:36] Kakadu вышел(а) из комнаты: Replaced by new connection
[13:17:37] Kakadu вошёл(а) в комнату
[13:17:55] <klapaucius> Ну, это проблема любой серьезной оптимизации - оптимизация, упрощенно говоря, выкидывает неиспользуемый код и если в неиспользуемом коде есть проблема - проблема будет выкинута вместе с кодом.
[13:20:12] <klapaucius> Точнее не неиспользуемый, а бесполезный. Без оптимизации он как раз используемый.
[13:22:36] <f[x]> изменяется семантика программы
[13:22:51] <f[x]> т.е. код не бесполезный (в каком-то смысле)
[13:23:37] <f[x]> вообщем мне на это очень странно смотреть
[13:28:09] <klapaucius> f[x]: Ну, понятно, что хаскель язык компромисный в том смысле, что серьезные преобразования кода типа луп-фьюжена/дефорестации в нем приводят к таким эффектам реже, чем в не ссылочно-прозрачном языке, но полностью-то они могут быть безопасны только в "тотальном" вроде Агды2
[13:31:53] f[x] самовыпиливается из дискуссии по причине тотального непонимания что такое "тотальный" ЯП
[13:33:11] <klapaucius> Неполный по Тьюрингу язык, в котором любой пм проверяется на полноту, а любая функция - на завершимость.
[13:34:03] dzhon вошёл(а) в комнату
[13:45:53] dzhon вышел(а) из комнаты
[14:03:38] dzhon вошёл(а) в комнату
[14:21:46] shaggie вошёл(а) в комнату
[14:42:54] Typhon вошёл(а) в комнату
[15:26:30] komar вышел(а) из комнаты
[15:26:40] komar вошёл(а) в комнату
[15:38:17] dzhon вышел(а) из комнаты: Replaced by new connection
[15:38:21] dzhon вошёл(а) в комнату
[15:44:40] letrec вошёл(а) в комнату
[15:44:53] letrec вышел(а) из комнаты
[15:45:09] letrec вошёл(а) в комнату
[16:15:12] dzhon вышел(а) из комнаты
[16:19:42] dzhon вошёл(а) в комнату
[17:13:58] dzhon вышел(а) из комнаты
[17:14:16] dzhon вошёл(а) в комнату
[19:00:49] dzhon вышел(а) из комнаты
[19:14:28] komar вышел(а) из комнаты
[19:21:33] komar вошёл(а) в комнату
[19:29:39] Kakadu вышел(а) из комнаты
[19:49:41] bobry вышел(а) из комнаты
[19:55:27] Andrey Popp вошёл(а) в комнату
[19:56:45] <Andrey Popp> никто не знает, были ли какие-то попытки создать rdb с поддержкой algebraic data types? ничего не нагуглил
[19:57:25] <gds> rdb -- реляционки?
[19:57:32] <Andrey Popp> угу
[19:57:59] <gds> вроде не было, тоже как-то искал.
[19:59:04] <gds> но: 1. для не-реляционных применений -- сериализовывать в строку и всё, 2. для реляционных -- разбивать примитивно на поле с конструктором и поля с аргументами.  неудобно, если рекурсивное оно, но через внешние ключи и это можно нарулить.
[20:02:03] <Andrey Popp> gds: да, это то понятно, с точки зрения приложения можно эмулировать, но мне очень часто с БД напрямую работать надо, sql написать, например… конечно и тут можно нарулить какой-нибудь язык, который в SQL компилироваться будет
[20:02:40] ftrvxmtrx вышел(а) из комнаты
[20:03:44] <gds> угу.  Вообще, взять бы парсилку sql, да и налепить эти типы туда.  Придётся расширить, но ничего нереального.  Только вот рекурсию как делать -- хз.  В connect by / with транслировать -- извращение, скорее всего вылетишь по сложности из нормально-оптимизируемого планировщиком бд.
[20:05:26] <Andrey Popp> gds: да, рекурсивность тут выльется в проблему — трансляция будет неочевидная на глаз… поэтому хотелось бы такую фичу иметь на уровне БД — чтобы могла взаимодействовать с планировщиком...
[20:10:13] <gds> не тебе одному хотелось бы.  А что конструктивно можно сделать -- ой не знаю.
[20:19:12] Kakadu вошёл(а) в комнату
[20:31:20] komar вышел(а) из комнаты: Replaced by new connection
[20:31:20] komar вошёл(а) в комнату
[20:34:46] bobry вошёл(а) в комнату
[20:50:49] Andrey Popp вышел(а) из комнаты
[20:58:11] Typhon вышел(а) из комнаты
[21:23:15] letrec вышел(а) из комнаты
[21:59:09] dzhon вошёл(а) в комнату
[22:51:48] komar вышел(а) из комнаты: Replaced by new connection
[22:51:49] komar вошёл(а) в комнату
[23:07:44] shaggie вышел(а) из комнаты
[23:14:19] ftrvxmtrx вошёл(а) в комнату
[23:41:54] ermine вышел(а) из комнаты
[23:43:15] <bobry> а что в камле модно пользовать для utf?
[23:43:17] <bobry> camomile?
[23:43:25] <bobry> batteries? extlib?
[23:43:34] <bobry> ну и вообще для строк
[23:43:50] <gds> смотря что от строк надо.
[23:44:10] <bobry> utf / fast concat
[23:44:28] <bobry> в camomile же веревки?
[23:44:58] <gds> что от utf надо?
[23:45:04] <gds> в camomile вроде не они.
[23:47:34] <bobry> вопрос про utf не понял
[23:48:10] <gds> "utf / fast concat" не понял
[23:50:44] <bobry> хочется быстро их склеивать
[23:50:55] dzhon вышел(а) из комнаты
[23:51:36] <gds> 1. стандартный String не подходит?
2. я порядка месяца назад думал тут о похожей структуре данных, где ты был?
[23:52:41] <bobry> ну вощем та веревки довольно стандартный вариант, уверен они есть для камло
[23:52:53] <bobry> стандартный String не умеет utf
[23:52:57] <bobry> или я что путаю?
[23:53:45] <gds> вот я и спрашиваю, что для тебя "уметь utf".
[23:54:32] <bobry> ок, адекватная итерация по многобайтовым символам, хотя бы
[23:54:40] <bobry> никакой нормализации не надо
[23:56:41] <gds> итерация = "взять символ по данному смещению в int и указать смещение следующего символа"?
[23:59:01] <bobry> вторую часть не понял, итерация это UString.iter : (UChar.t -> unit) -> UString.t -> unit
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!