Описание тега homoiconicity

Гомоиконность означает, что язык использует тот же синтаксис для структур данных, что и для операторов и объявлений. Например, Lisp обрабатывает структуры списков и состоит из списков символов и других списков. XSLT преобразует данные XML и записывается как допустимый XML.
2 ответа

Гомойконичность и SQL

В настоящее время я использую emacs sql-mode в качестве оболочки sql, (упрощенный) ответ на запрос приведен ниже: my_db=# select * from visit limit 4; num | visit_key | created | expiry ----+-----------------------------+----------------------------…
19 ноя '10 в 13:39
2 ответа

Что именно означает гомойконичность?

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

Можно ли разложить функцию Clojure?

Хотя я могу неправильно истолковывать концепцию гомойконичности, я понял ее как "код, являющийся данными". Итак, я могу написать код так: (def subject "world") (def helo '(str "Hello " subject)) С этой точки зрения, helo это только данные, но они мо…
23 май '13 в 15:34
3 ответа

Мета-схема XML

Поскольку XML-схемы (XSD) сами являются XML-файлами, должна быть возможность построить схему схемы (мета-схемы), верно? Я изо всех сил пытаюсь совершить этот подвиг. Я хотел бы создать схему, которая описывает схему с одним корнем complexType содерж…
16 июн '10 в 08:41
5 ответов

Теория гомоиконического типа

Лисп обладает свойством гомойности, то есть представление кода, используемого языковой реализацией (списками), также доступно и идиоматически используется программами, которые хотят представлять код для своих собственных целей. Другое основное семей…
15 ответов

Что делает макросы Lisp такими особенными?

Читая эссе Пола Грэма о языках программирования, можно подумать, что макросы Lisp - единственный путь. Как занятый разработчик, работающий на других платформах, я не имел права использовать макросы Lisp. Как человек, который хочет понять гул, пожалу…
06 ноя '08 в 07:33
4 ответа

Где я могу получить больше информации о гомоконичности?

Я экспериментировал с функциональным программированием и до сих пор не понимаю эту концепцию. Ребята, знаете ли вы какие-нибудь хорошие книги или учебники или примеры, которые обсуждают эту концепцию? Или, если бы вы могли показать небольшие фрагмен…
05 май '09 в 18:19
1 ответ

В каком смысле такие языки, как эликсир и джулия, гомоичны?

Гомиконичность в Лиспе легко увидеть: (+ 1 2) это как вызов функции + с 1, 2 в качестве аргументов, а также список, содержащий +, 1, а также 2, Это одновременно и код, и данные. На языке, как Юлия, хотя: 1 + 2 Я знаю, что мы можем разобрать это в Ex…
30 июл '15 в 20:50
6 ответов

Существуют ли языки программирования, которые рассматривают функции как структуры данных, с которыми можно работать?

Я написал следующую функцию как часть разрабатываемого плагина jQuery: $.fn.append2 = function(collection, callback) { var $this = this; $.each(collection, function(key, value) { $this.append(callback ? callback(key, value) : value); }); return this…
7 ответов

Функция обхода схемы в виде списка

Разве нельзя трактовать функции в Scheme как любой другой список? По сути, я хочу сделать что-то вроде этого: (define (foo) "hello") (cdr foo) ; or similar, should return the list ((foo) "hello") Я нашел подобное обсуждение по этому поводу, и я чувс…
2 ответа

Как напечатать блок без его оценки в Rebol

Я пытаюсь собрать генератор кода, и мне нужно напечатать блок (который содержит некоторый код для целевого языка) без его оценки (т.е. блока). Как мне это сделать? Редактировать 1 - Я понимаю, что это может быть легко достигнуто, если бы я должен бы…
1 ответ

Уровни гомоиконичности

Это продолжение моего предыдущего вопроса. Я не уверен, что код на Лиспе настолько же гомоичен, как и машинный код на архитектуре фон Неймана. Мне кажется очевидным, что в обоих случаях код представляется в виде данных, но также очевидно, что вы мож…
18 ответов

Практический пример гибкости Lisp?

Кто-то пытается продать мне Лисп, как сверхмощный язык, который может делать все что угодно, а потом и кое-что. Есть ли практический пример кода силы Лиспа?(Предпочтительно вместе с эквивалентной логикой, закодированной на обычном языке.)
19 сен '08 в 22:10
4 ответа

Homoiconic и "неограниченный" самоизменяющийся код + действительно ли lisp самоизменяется?

Я буду признателен за то, что мои знания Lisp чрезвычайно минимальны. Однако я чрезвычайно интересуюсь языком и планирую начать серьезно изучать его в ближайшем будущем. Мое понимание этих вопросов, без сомнения, неверно, поэтому, если я скажу что-т…
2 ответа

Привязки шаблонов для экзистенциальных конструкторов

Когда я писал на Haskell программистом, который раньше работал с Lisp, на меня обратили внимание странные вещи, которые я не смог понять. Это хорошо компилируется: {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE ExistentialQuantification #-} data Foo =…
16 ноя '18 в 22:35
1 ответ

Почему полезно рассматривать код как данные в lisp

Сейчас я изучаю emacs lisp и удивляюсь, почему это может быть полезно для обработки кода как данных. Какие преимущества такого подхода. Я видел одно объяснение, так как это альтернатива традиционной архитектуре фон Неймана, где существует четкое раз…
26 авг '14 в 08:12
1 ответ

Как сделать так, чтобы программные конструкции clojure было легче идентифицировать?

Clojure, будучи диалектом Lisp, унаследовал гомосиконичность Lisp. Гомойсоничность упрощает метапрограммирование, поскольку код можно обрабатывать как данные: отражение в языке (проверка сущностей программы во время выполнения) зависит от единой, од…
23 дек '17 в 23:10
1 ответ

В каких случаях трудно различить код и данные?

Говорят, что код - это данные (и наоборот, то есть гомоичные) в Rebol и Red. Кроме того, сказано, что невозможно различить два. Насколько я понимаю, здесь есть 2 случая: Определить с уверенностью код из смеси кода и данных Определить с уверенностью …
17 мар '17 в 10:22
10 ответов

Может ли компилируемый язык быть гомойным?

По определению слово homoiconic означает: То же представление кода и данных В LISP это означает, что вы могли бы иметь цитируемый список и оценить его, поэтому (car list) будет функция и (cdr list) аргументы. Это может происходить как во время компи…
4 ответа

Clojure менее гомоиконичен, чем другие lisps?

Утверждение, которое, как я помню, повторялось в видеороликах Clojure for Lisp Programmers , состоит в том, что большая слабость ранних Лиспов, особенно Common Lisp, заключается в том, что слишком многое связано со структурой списка Лиспов, особенно…