LINUX.ORG.RU

пара вопросов про Lisp


0

0

Приветствую!

Есть у меня пара дурацких вопросов об этом языке. Если возможно - в двух словах об этом. Или же - прямую ссылочку, где прочесть.

1. Что есть (labels ... ? (Если можно, с примером применения)
2. Встроенные функции регэкспов типа:
(regexp:match «bank» «the bank of knoweledge») вернёт:
#S(REGEXP:MATCH :START 4 :END 8)

Что это за выражения, начинающиеся со знака «#» ? Как этим пользоваться?

Заранее благодарен.


labels - определение локальных функций

С «#» все сложно. То, что что-либо печатается с префиксом «#» ничего не значит само по себе(это, грубо говоря, просто метод print-object так перегружен, чтобы так печатать). Но вообще, это стандартный т.н. «dispatch macro character». Он в основном используется для того, чтобы в удобном виде конструировать различные вещи. Почему dispatch - потому что идет диспатч по следующей литере после собственно #.
например:
#X - какое-либо число в 16-ричной системе. Напр. #xFF - 255
(аналогично #B - двоичная система счисления, #O - восьмеричная, и, вообще, #*R - число в системе счисления с базой *)
#S - какая-либо структура. (например, структура типа «REGEXP» со слотами :START и :END установленными в 4 и 8 соответственно)
#P - структура pathname, напр, #P"/usr/bin"
и т.п.
Еще он используется для условной компиляции (#+ и #-), биндинга переменных ридера(#число=), взятия значения этих переменных(#число#) и т.п.
http://www.lispworks.com/documentation/lw50/CLHS/Body/02_dh.htm

Love5an
()
Ответ на: комментарий от Love5an

#S - какая-либо структура. (например, структура типа «REGEXP» со слотами :START и :END установленными в 4 и 8 соответственно)

Я правильно понимаю, что надо внимательно CLOS смотреть?

solom
() автор топика
Ответ на: комментарий от solom

Структуры к CLOS не относятся. А чего надо-то? поля извлечь? Ну имена accessor'ов будут regexp:match-start и regexp:match-end.

k_andy ★★★
()
Ответ на: комментарий от k_andy

К примеру, я хочу найти нужный шаблон и на что-нить его заменить. Или просто выделить.

solom
() автор топика

2. Встроенные функции регэкспов типа:

Встроенных регэкспов в ANSI Common Lisp нет. Есть библиотека CL-PPCRE, которую ложат в одну из реализаций ANSI CL - CLISP. Возможно, в проприетарных реализациях тоже есть своя библиотека для регекспов. В любом случае, всё написано в документации на библиотеку :)

mv ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.