Вопрос про Гомоиконность

120 views
Skip to first unread message

Evgeniy Fateev

unread,
Sep 5, 2013, 1:03:08 PM9/5/13
to clojure...@googlegroups.com
Доброго всем дня. Начинаю изучать Clojure. Подскажите пожалуйста, правильно ли я понимаю понятие "Гомоиконность"? Его суть - представление кода как данных. Иными словами, при определении функции мы используем всё те же структуры данных самого языка. Например, при определении функции:

(defn square [x] (* x x))

на самом деле имеем список, в котором слева направо идут 2 символа, вектор и ещё один список. Собственно, вопрос касается аналогии с императивными языками. Как Гомоиконность проявляется в них, возможно в конструкции eval?

Alex Ott

unread,
Sep 5, 2013, 2:38:11 PM9/5/13
to clojure...@googlegroups.com
Да, так оно и есть. Основное применение гомоиконности - макросы - для трансформации кода можно использовать стандартные функции работы со списками и векторами, без выдумывания дополнительных вещей, как в скале или других языках


2013/9/5 Evgeniy Fateev <spac...@gmail.com>
Доброго всем дня. Начинаю изучать Clojure. Подскажите пожалуйста, правильно ли я понимаю понятие "Гомоиконность"? Его суть - представление кода как данных. Иными словами, при определении функции мы используем всё те же структуры данных самого языка. Например, при определении функции:

(defn square [x] (* x x))

на самом деле имеем список, в котором слева направо идут 2 символа, вектор и ещё один список. Собственно, вопрос касается аналогии с императивными языками. Как Гомоиконность проявляется в них, возможно в конструкции eval?

--
Вы получили это сообщение, поскольку подписаны на группу Clojure Russian.
 
Чтобы отказаться от подписки на эту группу и перестать получать из нее сообщения, отправьте электронное письмо на адрес clojure-russi...@googlegroups.com.
Настройки подписки и доставки писем: https://groups.google.com/groups/opt_out.



--
With best wishes,                    Alex Ott
http://alexott.net/
Twitter: alexott_en (English), alexott (Russian)
Skype: alex.ott

Evgeniy

unread,
Sep 5, 2013, 2:42:51 PM9/5/13
to clojure...@googlegroups.com
Ясно, спасибо.
Вы получили это сообщение, так как подписаны на группу "Clojure Russian".
Чтобы отказаться от подписки на эту тему, перейдите на страницу https://groups.google.com/d/topic/clojure-russian/w4rO_fjhSeQ/unsubscribe.
Чтобы отказаться от подписки на эту группу и все входящие в нее темы, отправьте электронное письмо на адрес clojure-russi...@googlegroups.com.

Настройки подписки и доставки писем: https://groups.google.com/groups/opt_out.



--
Sincerely, Evgeniy
Reply all
Reply to author
Forward
0 new messages