Тащемто, для полного счастья в bike, кроме прочего, не хватало ридер-макросов, которые бы уменьшали количество круглых скобок, квотирования и прочего текста при вызове дотнета.
Тащемто теперь есть. Вот так можно вызывать методы:
(use-namespace 'System)
[:Console WriteLine "Hello, World!"]
Вот так можно получить текущее время в стринге: (ни одной круглой скобки! может это tcl/tk?)
[[:DateTime %Now] ToString]
А вот так получить значение максимального int32, из специального статического поля соответствующего класса:
[:int $MaxValue]
Более того, можно стучаться в индексеры дикшнрей и прочих объектов, даже круче чем в Clojure:
(let ((dict (new '(Dictionary :string :string))))
(setf #[dict "Hello"] "World!")
dict)
И создавать Enum-ы не обременяя себя расставлением запятых:
(use-namespace 'System.Reflection)
#e(BindingFlags Public Static)
На закуску, для любителей ковыряться в байтах, добавил и такую возможность, прямо как в C# только лучше:
(use-namespace 'System.Text)
(let ((dotnet-array [[:Encoding %UTF8] GetBytes "Hello, World!"]))
(with-fixed (raw-pointer dotnet-array)
(cffi:mem-ref raw-pointer :uint8)))
;; ==> 72
Не хватает батареек? Тогда мы идем к вам!