Немножко динамической типизации и кложури
Jan. 17th, 2013 04:59 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Макрос 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? :)
Вот эта содомия с лишними или пропущенными скобками, не обнаруживаемыми компилятором работу с кложурелиспами делает немного неудобной.
И практически не пригодной для осмысленного использования людьми без встроенной типовыводилки в голове.
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? :)
Вот эта содомия с лишними или пропущенными скобками, не обнаруживаемыми компилятором работу с кложурелиспами делает немного неудобной.
И практически не пригодной для осмысленного использования людьми без встроенной типовыводилки в голове.
no subject
Date: 2013-01-18 02:48 am (UTC)Никто не говорит про полную проверку типов функций - это в динамически типизированном языке by design не сделаешь. Домашнее задание: найти ответ "почему".
Речь про частичные проверки функций, декларации которых нам известны из внешнего scope
no subject
Date: 2013-01-18 07:52 am (UTC)no subject
Date: 2013-01-18 12:27 pm (UTC)