Результаты поиска
Как далеко может зайти LISP macros?
Я много читал, что LISP может переопределить синтаксис на лету, предположительно с помощью macros. Мне интересно, как далеко это на самом деле заходит? Можно ли переопределить структуру языка настолько, чтобы он стал пограничным компилятором для другого языка? Например, не могли бы вы изменить функциональную природу LISP на более объектно-ориентированный синтаксис и семантику, скажем, приблизив синтаксис к чему-то вроде Ruby?
В частности, можно ли избавиться от скобки hell, используя macros? Я узнал достаточно (Emacs-)LISP, чтобы настроить Emacs с помощью моих собственных микро-функций, но мне очень любопытно, как далеко может зайти macros в настройке языка.
Почему я должен учить Lisp?
Я действительно чувствую, что должен учиться Lisp , и есть много хороших ресурсов, которые помогут мне это сделать.
Меня не пугает сложный синтаксис, но где в "traditional commercial programming" я найду места, где было бы целесообразно использовать его вместо процедурного языка.
Есть ли там коммерческое приложение-убийца, которое было написано в Lisp ?
Как привязать регулярное выражение к комбинации клавиш в emacs?
Для контекста я что-то вроде Новичка emacs. Я не использовал его очень долго, но использую его все больше и больше (мне это очень нравится). Также мне комфортно с lisp, но не очень хорошо знаком с elisp.
То, что мне нужно сделать, это привязать регулярное выражение к комбинации клавиш, потому что я использую этот конкретный regex так часто.
То, что я делал:
M-C-s ^.*Table\(\(.*\n\)*?GO\)
Обратите внимание, что я использовал новую строку выше , но я обнаружил, что для isearch-forward-regexp вам действительно нужно заменить \n в регулярном выражении на результат C-q Q-j . Это вставляет литеральную новую строку (без завершения команды), позволяя мне поместить новую строку в выражение и сопоставить строки.
Как я могу привязать это к комбинации клавиш?
Я смутно понимаю, что мне нужно создать функцию elisp, которая выполняет isearch-forward-regexp с выражением, но я нечетко разбираюсь в деталях. Я поискал в гугле и нашел большинство документов, которые должны быть немного запутанным.
Как я могу привязать регулярное выражение к комбинации клавиш в emacs?
У Майка Стоуна был лучший ответ на данный момент-не совсем то, что я искал, но он работал для того, что мне нужно
Edit-этот вид работал, но после сохранения макроса, когда я вернулся, чтобы использовать его позже, я не мог использовать его с C-x e . (т. е., если я перезагружаю emacs, а затем набираю M-x macro-name, а затем C-x e , я получаю сообщение в минибуфере, например "нет последнего макроса kbd" или что-то подобное)
@Mike камень-Спасибо за информацию. Я попытался создать макрос вот так:
C-x( M-C-s ^.*Table\(\(.*C-q C-J\)*?GO\) C-x)
Это создало мой макрос, но когда я выполнил свой макрос, я не получил того же выделения, которое я обычно получаю, когда использую isearch-forward-regexp . Вместо этого он просто перескочил к концу следующего матча выражения. Так что это действительно не работает для того, что мне нужно. Есть идеи?
Edit: похоже, я могу использовать macros, чтобы делать то, что я хочу, мне просто нужно думать вне коробки isearch-forward-regexp . Я попробую то, что вы предложили.
Написание расширений Emacs на языках, отличных от Lisp
Я хотел бы взять существующее приложение (написанное в OCaml) и создать для него Emacs "interface" (например, режим Emacs GDB). Я бы предпочел сделать это без написания тонны кода Lisp. В терминах MVC я хотел бы, чтобы представление было Emacs, но для модели и контроллера оставалось (в первую очередь) OCaml.
Кто-нибудь знает способ написать расширения Emacs на языке, отличном от Lisp? Это может иметь форму привязки к расширению Emacs API на каком-либо другом языке (например, делая OCaml первоклассным языком расширения Emacs) или режим взаимодействия Emacs, где, например, расширение имеет канал, в который оно может записывать выражения Emacs Lisp и считывать результирующие значения.
Что такое хороший начальный текст по функциональному программированию?
Я люблю изучать языки за пределами своей зоны комфорта, но мне было трудно найти место для начала работы с функциональными языками. Я слышал много хорошего о структуре и интерпретации компьютерных программ, но когда я попытался прочитать его пару лет назад, он просто свистел у меня над головой. Я гораздо лучше справляюсь с книгами, чем с веб-сайтами, но когда я посещаю местный книжный магазин, книги на LISP выглядят немного пугающе.
Так что же является хорошей отправной точкой? Моя цель состоит в том, чтобы иметь возможность использовать функциональный язык программирования для решения простых задач за 6 месяцев или около того, а также возможность переходить к более продвинутым темам, распознавать, когда функциональный язык является правильным инструментом для работы, и использовать язык для решения большего количества проблем в течение 2-3 лет. Мне нравятся книги, в которых много примеров, но также есть проблемы, над которыми нужно работать. Существует ли такая вещь для функциональных языков?
Lisp исполняемый файл
Я только начал изучать Lisp и не могу понять, как скомпилировать и связать код lisp с исполняемым файлом.
Я использую clisp и clisp -c для получения двух файлов:
- .fas
- .lib
Что мне делать дальше, чтобы получить исполняемый файл?