Есть кто-то кто хоть как-то касался этого ЯП?
После пролога он какой-то немного жутковато-эмоциональный со своим безграничным набором смайлов.
В интеренете очень мало инфы по нему и легко потерятся :-/
Сейчас читаю про его особенности и создается впечатление всемогущего языка, особенности которого переняли и С, и джава, судя по ВИКИ. А литературы и каких-то статей сложно найти. Хабр почти пустой.
По-этому, если кто-то знаком хоть минимально, то не проходите мимо :-)
Судя по всему, как и в прологе, самой маленькой еденицей программы есть атомы, всего их два типа - строки и числа.
Есть константы - T(правда) и NIL(ложь).
Меня сейчас терзает один вопрос. Если в прологе создавались правила.. в одном секторе программы объявляем, а в другом - описываем их. То что делать тут?
Уже нашел описание списков.. те самые скобки в которых идет перечесление.. элементов, как я понимаю.
Опять же, как в лиспе, есть понятие - голова списка и его хвост..
Чтоб задать список, если не прав, то поправте, кто может, нужно использовать такой формат:
имя списка ::= (голова, хвост)
Дальше же идет работа со списками с помощью немалого количества функций..
p.s. Буду пробовать создавать списки.. Может чего и получится
описание функции: (имя функции аргумент1 аргумент2) - имя функции и перечесление аргументов через пробел
Теперь приведу пример:
Входная строка: ((q (w (e) r) t) y). Исходная: ((q) w (e) r)
Мой ход мыслей был такой:
достаем голову списка, отбрасывая хвост, и в итоге получаем список(назовем его список 1): q (w (e) r) t
достаем голову из списка 1 и в итоге получаем: q
следущим шагом возвращаемся к списку 1 и достаем его хвост, получая список 2: (w (e) r) t
тут у нас снова лишний хвост.. достаем снова голову, теперь из списка 2, получая список 3: w (e) r
далее все просто.. контактируем q и список 3, получая в итоге: q w (e) r
Команда: (CONS (CAR(CAR '((q (w (e) r) t) y))) (CAR (CDR(CAR '((q (w (e) r) t) y)))))
Одного не понял.. как q внести тоже в список..
p.s. Может попробую что-то еще делать. А сегодня ухожу спать.