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

GMT+4
[00:07:32] <ermine> хнык!
[00:07:49] <ermine> как мне надоели проблемы с одинаковыми именами полей в рекордах
[00:08:30] <ermine> рекорды кстати имеют 4 поля с одинаковыми именами, 3 из них - одинаковый тип, а в четвертом тип отличается
[00:09:16] <ermine> а еще мне нужна имя переменной "type"
[00:11:51] ermine в данный момент использует функцию вместо рекорда, но уже задолбалась с ней
[00:14:04] <gds> сделай параметризованный тип, где параметр будет обозначать тип четвёртого поля.
Насчёт "type" -- бери пример с отцов окамла. "t", "ty", "typ", "the_fkked_type" (ну это в будущем).
[00:15:38] <ermine> kind?
[00:15:44] ermine задумалась
[00:15:51] <gds> sort!111
[00:16:09] <ermine> а про параметнический тип я похоже ступила
[00:16:30] <ermine> попробую заюзать, спасибо
[00:16:38] <ermine> да, тут иной раз полезно похныкать
[00:17:11] <gds> не факт, что ступила -- бывает, что наоборот, сумничаешь, а параметрический не лезет ни в какую -- например, когда всё решается в рантайме.
[00:17:19] <ermine> а то у меня везде в исходниках type_
[00:18:16] <gds> и ещё про "type" -- была поцоватая история, когда в ocamlnet (?) было имя метода "value", которое в revised syntax кагбэ ключевое слово.
а про "type_" -- если в записях, то точно не ошибёшься.
[00:19:34] <gds> если чо, объектов не стремайся, они классни.
[00:20:06] <ermine> да мне эстетически хвостики не нравяца
[00:20:17] <ermine> еще было to_
[00:20:24] <ermine> от него избавилась
[00:21:53] <ygrek> кстати интересно - никто не делал из камля питон обернув все базовые value (int,string,'a list,etc) в объекты с #print, #equal ( : obj -> obj -> bool а не 'a -> 'a -> bool) итп?
[00:22:23] <ygrek> насколько это было бы юзабельно и медленно?
[00:23:29] <ygrek> хотя понятно что неудобно - все константы кастить руками в объекты, да
[00:29:06] <gds> ygrek: аааа!111 я про это же кому-то (вот вспомнить бы) говорил пару лет назад. camlp4 в руки даётся, ясное дело.
переписывание ast на уровень в сторону отдаления от машины.
было бы практично. если бы окамл умел хорошо инлайнить хотя бы. Но вообще поиграться было бы забавно.
[00:29:49] <ygrek> ах, да, camlp4 упрощает
[00:31:05] <gds> о да. В целом-то можно. И например ленивость привнести подобным же образом, на все операции.
Но получится тормозное унылое говно, имхо.
Не проверял, да.
[00:38:35] <gds> вообще порой просто убивает, что окамл не умеет всякое List.iter, List.map и подобное инлайнить, когда при ручном инлайне скорость увеличивается в 10 раз.
[00:39:03] <ermine> /mу заменила почти глобально type_ на kind, типа как смена фирмваря
[00:39:07] <ermine> теперь бы привыкнуть
[00:40:23] <ermine> так, а теперь пободаемся с рекордами
[00:41:58] <gds> ygrek: но вообще идея с питоном кажется хорошей. Статический её вариант -- идея с deriving, функторы и все дела. Если будет желание, "подумай в чат", лично мне очень интересны размышления на эту тему.
[00:42:02] <gds> ermine: kind -- жить будешь, точно :)
[00:44:36] <ermine> gds: kind hair :)
[00:46:30] <gds> аааааааа!111 не слышал раньше это.
[00:47:12] <ermine> но вот разные перевотчики по-разному переводят
[00:57:33] <gds> я вообще вполне доверяю urbandictionary.com, но тут он выдал непотребщину: http://www.urbandictionary.com/define.php?term=Kind%20Hair
вот только сейчас я решил поискать по картинкам и понял, что культурные люди имеют ввиду совсем не то, что описано в так сказать словаре.
[01:02:19] ygrek вышел(а) из комнаты
[01:20:33] <ermine> параметрические рекорды - это круто
[01:20:59] <ermine> надо еще подумать, чо можно еще напараметризовать
[02:16:21] <gds> да всё что можно, при желании. я вон с параметризованным unit игрался :)
однако кое-что нельзя. в определении "type t = .." тип t обязан быть чисто конкретным. На этом попадался раньше при поисках нужных абстракций, попался и сегодня, пытаясь переводить некий код (LogicM/LogicT таки, оооо...), в котором было что-то вроде "type t 'm 'a = { .. t2 ('m 'a) }". То есть, параметризованные типы в определении других типов если и участвуют, то простенько, как совершенно конкретные типы.
[03:07:02] <gds> тьфуты. "в определении "type t = .." тип t обязан быть чисто конкретным" -- конечно, не про t имел ввиду.
а человеческая нотация параметризованных типов из revised syntax -- это не ошибка.
а ещё один математик советует "Agda". Что-то вроде Coq, но более практически-ориентированное на погроммирование.
[06:37:40] john вышел(а) из комнаты: Replaced by new connection
[06:37:41] john вошёл(а) в комнату
[08:19:21] john вышел(а) из комнаты: Replaced by new connection
[08:19:22] john вошёл(а) в комнату
[10:19:29] sevenov вышел(а) из комнаты: Replaced by new connection
[10:19:30] sevenov вошёл(а) в комнату
[10:36:41] ygrek вошёл(а) в комнату
[11:34:14] DiGiTAL_CuRSe вошёл(а) в комнату
[11:51:55] DiGiTAL_CuRSe вышел(а) из комнаты
[11:54:09] sevenov вышел(а) из комнаты
[11:54:13] sevenov вошёл(а) в комнату
[12:04:02] sevenov вышел(а) из комнаты: Replaced by new connection
[12:04:05] sevenov вошёл(а) в комнату
[12:48:04] sevenov вышел(а) из комнаты
[12:48:23] sevenov вошёл(а) в комнату
[13:20:57] ygrek вышел(а) из комнаты
[13:41:43] ygrek вошёл(а) в комнату
[14:08:44] sevenov вышел(а) из комнаты: Replaced by new connection
[14:08:45] sevenov вошёл(а) в комнату
[14:17:10] sevenov вышел(а) из комнаты: Replaced by new connection
[14:17:27] sevenov вошёл(а) в комнату
[15:08:25] ygrek вышел(а) из комнаты
[15:08:29] ygrek вошёл(а) в комнату
[15:34:37] john вышел(а) из комнаты
[17:15:59] john вошёл(а) в комнату
[20:11:48] ygrek вышел(а) из комнаты: Replaced by new connection
[20:11:49] ygrek вошёл(а) в комнату
[20:19:23] ygrek вышел(а) из комнаты: Replaced by new connection
[20:19:24] ygrek вошёл(а) в комнату
[20:42:35] ermine почти два часа играется с функцией let maybe f = function None -> None | Some v -> Some (f v) и безумно веселится
[21:20:17] <sceptic> монады?
[21:22:08] <ermine> неа
[22:19:02] ygrek вышел(а) из комнаты
[22:58:13] <gds> ermine: да. это монада таки. только от этого -- ни радости, ни печали. а вот твоя maybe -- реализация функции bind для конкретной монады. опять же -- who cares.
[23:00:15] <gds> а ещё можно оформить это как инфиксный оператор и ловить дополнительный кайф.
get_one_shit >>= fun shit1 ->
get_another_shit >>= fun shit2 ->
Some (my_kewl_fun shit1 shit2)
[23:30:45] <gds> кстати, хз писал ли, но вроде реализовал хнюшку от Олега, которая LogicM / LogicT. Проблема в том, что формальное доказательство сложно, а там в описательной части (от Олега) структуры иммутабельные, а у меня же -- мутабельные. Stream и куча его внутренних функций, которые, к моему счастью, экспортируются из модуля.
Смотрю на Coq, small-step sematics, или же на Agda для реализации, и, заодно, на формальную проверку стандартного модуля Stream.
Но лень всё это, ибо трудоёмко.
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!