metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2013-01-17 04:59 pm
Entry tags:

Немножко динамической типизации и кложури

Макрос with-db-comment выполняет указанную функцию с параметрами в контексте коннект+транзакция, с логом комментария к транзакции в БД.
dump-seq-debug скармливает последовательность в log4j для отладки.

вот такое падает с NPE:
(with-db-comment "(get-subaccounts 20)"
(dump-seq-debug (get-subaccounts "20")))

вот такое работает:
(with-db-comment "(get-subaccounts 20)"
dump-seq-debug (get-subaccounts "20"))

Можно ли увидеть разницу с первого раза и понять, откуда там NPE? :)

Вот эта содомия с лишними или пропущенными скобками, не обнаруживаемыми компилятором работу с кложурелиспами делает немного неудобной.
И практически не пригодной для осмысленного использования людьми без встроенной типовыводилки в голове.

[identity profile] metaclass.livejournal.com 2013-01-17 04:00 pm (UTC)(link)
Тело может быть и f и (f) - оба формально валидны.

[identity profile] asvil (from livejournal.com) 2013-01-17 04:07 pm (UTC)(link)
Это понятно, фишка в том, что по хорошему макрос with- пишут не так как вышеприведеном примере.

[identity profile] nivanych.livejournal.com 2013-01-17 04:09 pm (UTC)(link)
Ну в крайнем случае, про сравнение различных хороших свойств на (∞,1)-категориях, близким к тем, что достаточно для гомотопической теории типов — может быть, стоит обойтись структурами, подобными претопосам или предикативным топосам, а унивалентность, ведущая к топосности, не так и нужна?
Так же, хотелось бы обсудить с ним практическую разницу обобщения аксиомы множественного выбора для (∞,1)-категорий и более сильного — унивалентности (если уже есть ПW-претопосность).
Может быть, и metaclass к нам присоединится — нутром чую, его подобные разговоры страшно увлекают!

[identity profile] thedeemon.livejournal.com 2013-01-17 04:24 pm (UTC)(link)
Нет-нет, без унивалентности писать на Руби решительно невозможно!

[identity profile] theiced.livejournal.com 2013-01-17 04:30 pm (UTC)(link)
видно с первого взгляда же

[identity profile] nivanych.livejournal.com 2013-01-17 04:41 pm (UTC)(link)
Но ведь он много, на чём пишет!
Например, как и Метакласс, частенько и на кложурке!

[identity profile] denis dmitriev (from livejournal.com) 2013-01-17 05:12 pm (UTC)(link)
Как это поможет в этом случае, когда все скобки парные и корректны сами по себе?

[identity profile] artureg.livejournal.com 2013-01-17 05:47 pm (UTC)(link)
кэп?

[identity profile] artureg.livejournal.com 2013-01-17 05:59 pm (UTC)(link)
рассмотрим частные случаи:
1. f принимает 2 аргумента f1 принимает 0 аргументов
(f a f1)
(f a (f1))

2. f принимает 2 аргумента f1 принимает 1 аргумент и возвращает f3, f3 принимает 0 аргументов
(f a (f1 b))
(f a ((f1 b)))

домашнее задание:. f принимает 3 аргумента, последний не обязательный

[identity profile] levgem.livejournal.com 2013-01-17 06:11 pm (UTC)(link)
цуко, жжошь!! омега-групоиды! Это же ещё хуже чем трихомонадиоз!

[identity profile] blackyblack.livejournal.com 2013-01-17 06:17 pm (UTC)(link)
Да, я тоже понял, что в лиспах форматирование кода - неотъемлемая часть языка. Правда недокументированная.

[identity profile] vit-r.livejournal.com 2013-01-17 06:37 pm (UTC)(link)
Нужно всегда выносить непарную скобку на новую строчку.
(  abc
   (def)
   g
   )

всегда лучше "традиционного"
Правда, я за скобкой ещё и комментарий ставлю, к чему она относится, чтобы вверх-вниз не бегать

[identity profile] theiced.livejournal.com 2013-01-17 08:21 pm (UTC)(link)
за такое вырывать яйца

[identity profile] vit-r.livejournal.com 2013-01-17 09:09 pm (UTC)(link)
Насколько помню, первыми на эшафот стоят создатели С. Вот кто совсем ничего не понимал в программировании...

Не, я, конечно, могу прочитать лекцию на часик, что стоит за подобными вещами и из-за каких исторических тормозов они сейчас не в тренде. Но нафиг мне это надо.

[identity profile] theiced.livejournal.com 2013-01-17 09:22 pm (UTC)(link)
такие скобки мешают читать код
точка

[identity profile] vit-r.livejournal.com 2013-01-17 09:23 pm (UTC)(link)
Увы, но код не читают. Это не книжка. Там всё на порядок интереснее.

[identity profile] theiced.livejournal.com 2013-01-17 09:26 pm (UTC)(link)
это ортуреги код не читают
а я читаю

[identity profile] metaclass.livejournal.com 2013-01-17 09:29 pm (UTC)(link)
Кстати, код обычно воспринимается как дерево, не как последовательный текст.
Ты ж не читаешь книгу - сначала начало параграфа, потом конец.
А код читать (и писать) лучше именно так.

[identity profile] vit-r.livejournal.com 2013-01-17 09:30 pm (UTC)(link)
Значит, открытия ещё впереди

[identity profile] metaclass.livejournal.com 2013-01-17 09:31 pm (UTC)(link)
Я так выносил, пока редактор с более-менее адекватной подсветкой скобок не попался под руки.
Но вообще отдельная строка для закрывающей скобки часто удобнее (и комментарии ставить проще и копироваьт строки.

[identity profile] vit-r.livejournal.com 2013-01-17 09:45 pm (UTC)(link)
Редактор не спасает в том случае, когда в результате изменения внутри цельность нарушается. И он не видит две парные ошибки.

[identity profile] theiced.livejournal.com 2013-01-17 09:49 pm (UTC)(link)
paredit нужен - тогда таких ошибок не возникает

[identity profile] vit-r.livejournal.com 2013-01-17 09:59 pm (UTC)(link)
Мозги не заменит

[identity profile] zamotivator.livejournal.com 2013-01-18 02:48 am (UTC)(link)
Артурег, как всегда, нихуя не понял, но поучает.

Никто не говорит про полную проверку типов функций - это в динамически типизированном языке by design не сделаешь. Домашнее задание: найти ответ "почему".
Речь про частичные проверки функций, декларации которых нам известны из внешнего scope

[identity profile] thedeemon.livejournal.com 2013-01-18 04:20 am (UTC)(link)
А ведь я даже ничего не придумывал:

"Moreover, intensional type theory has been interpreted in the model categories of ω-groupoids, simplicial sets
and many others, where a dependent type over a type became a fibration over a space. In fact, the groupoid interpretation was the first interpretation of intensional type theory which had non-trivial paths."

- с первых страниц одной _дипломной работы_ на тему, которую nivanych безошибочно угадал (аксиома унивалентности и связанная с ней гомотопическая теория типов).

Page 2 of 3