powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Тяпничные комбинаторы
25 сообщений из 37, страница 1 из 2
Тяпничные комбинаторы
    #38999342
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здарова коллеги.

Хаскелисты . Сишники. Жаботисты. Лиспо-веды. Счетуны . Математики и прочие любители загадок парадоксов
брейнфаков, эзотерических языков. А также Илья. Сова. Дима. Саша-Меркурий. Владимир. Егорыч. Сибиряков.
И Сидоров. Ну .. если Базист подтянется - будет вообще чудненько.

Тема - комбинаторная логика (КЛ). Опущу детали. Интересущиеся почитают книжку Душкина или Вики.
Или более фундаментальные труды Хаскелла Карри. Вкратце.

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

Процесс применения комбинаторов называется аппликацией .
Аппликация не подчиняется законам арифметики. По сути комбинаторы
стоят на уровень ниже арифметики, образовывая некие философские
базовые понятия на которых можно (наверное) построить некую арифметику.

Алфавит комбинаторов состоит из:

Заглавных букв (комбинаторы)

Строчных букв (переменные)

Круглые скобки как приоритетность

Знак равенства - постулируемое правило аппликации.

Душкин выделяет следующие фундаментальные комбинаторы (осторожно под катом
буквы):

Канцеллятор
Код: plaintext
1.
Kxy=x


Коннектор
Код: plaintext
1.
Sxyz=xz(yz)


Тождество
Код: plaintext
1.
Ix=x


Композитор
Код: plaintext
1.
Bxyz=x(yz)


Пермутатор
Код: plaintext
1.
Сxyz=xzy


Дубликатор
Код: plaintext
1.
Wxy=xyy



Их названия могут отличаться от других в переводной литературе. На суть не влияет.

Группы комбинаторов могут образовывать базисы. И выражаться друг через друга.
Впрочем это сейчас не важно.

Что я хочу сделать.

Ну... наверное свой макет для экспериментов с КЛ. И реализацию на сях.

Как я это хочу сделать

Да вобщем-то всё равно. Можно
Код: plaintext
1.
2.
3.
void main(int argc, char **argv){
    eval_combinators("....");
}


с выводом диалога в REPL. Можно оконным приложением.
Можно чтением из stdin.

Ради чего я всё это делаю.

1) Ну во первых - Just For Fun. Ради удовольствия. Ради spend time.
2) Во вторых, чтобы освоить интересный раздел ФП и применить эти знания
в будущем в других смежных областях. В обработке текста.
3) Попутно поковырять С/C++ и трансляторы и запилить свой собственный "deqaws" или
обфускатор.

В чём пока еще я не разобрался
Как доказать конечность комбинаций? Возможны ли зацикливания и рекурсии?
Как постулировать "число" и "операции" над ним?
Как синтезировать строительные блоки - DO,WHILE,IF,IF-ELSE и использовать их?
Существует ли "контекст" аппликаций?
Как "оптимизировать" строковые замены?
Как... e.t.c.

Вобщем слушаю каменты.
Ваш покорный слуга и модератор mayton

P.S. Время до ПН еще есть...
...
Рейтинг: 0 / 0
Тяпничные комбинаторы
    #38999346
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonСибиряков.
На меня не рассчитывай. Из всех комбинаторов я знаю только Бендера, а из поста не понял ни
слова.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Тяпничные комбинаторы
    #38999349
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ну ОК. Не страшно. Побудь в подписчиках.
...
Рейтинг: 0 / 0
Тяпничные комбинаторы
    #38999363
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovиз поста не понял ни слова.

+1

mayton, не умничай, на пальцах объясни.
...
Рейтинг: 0 / 0
Тяпничные комбинаторы
    #38999366
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дайте подумать. Чёт упустил во введении.
...
Рейтинг: 0 / 0
Тяпничные комбинаторы
    #38999373
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или ссылок дай где ты этих заумностей нахватался. Примеры давай. Тут знатоков теории мало, лично я немного знал и то забыл, Саша может поймет о чем речь.
...
Рейтинг: 0 / 0
Тяпничные комбинаторы
    #38999380
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Погуглил
Комбинаторная логика
Комбинаторы — это просто!

Это какой-то глубокоматематический капец без намека на реальное примение. Не, может я не понял глубину, но данное чтиво может взорвать мозг, а он у меня один и я его берегу ))
...
Рейтинг: 0 / 0
Тяпничные комбинаторы
    #38999500
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton Тема - комбинаторная логика (КЛ). Опущу детали. Интересущиеся почитают книжку Душкина или Вики.
Или более фундаментальные труды Хаскелла Карри. Вкратце.
эээээ.... как бы сказать помягче.
Не надо их читать. Есть намного более лучшие, понятные и поступательно развивающие тему книги.
Можешь начать с Michael Sipser, Introduction to the Theory of Computation.
Душкина я не листал, но судя по нестандартности терминов которые ты использовал - читать его не надо.
А Curry тут слегка не в тему, тебя зацепил разбор грамматик, а у Curry это мизерный этап, к Curry надо приходить уже хорошо разбираясь в грамматиках.

Ну это что касается теории...

mayton Ради чего я всё это делаю.

1) Ну во первых - Just For Fun. Ради удовольствия. Ради spend time.
2) Во вторых, чтобы освоить интересный раздел ФП и применить эти знания
в будущем в других смежных областях. В обработке текста.
3) Попутно поковырять С/C++ и трансляторы и запилить свой собственный "deqaws" или
обфускатор.

Вопрос первый, ты очень огорчишься если я ткну пальцем в Yacc/Bison и скажу что эти приложения как раз и делают то о чем ты говоришь? :)
А еще есть целый язык OCaml в котором разбор грамматик является фичей встроенной в сам язык. И мне сильно кажется что всего Верблюда именно ради этого и делали. Очень уж легко на нем делать трансляторы, за счет всего остального...

mayton В чём пока еще я не разобрался
Как доказать конечность комбинаций? Возможны ли зацикливания и рекурсии?Конечность? А что ты под этим понимаешь?

И да, рекурсии возможны.
Вот тебе рекурсия:
A = Aa | ɛ
А зацикливания невозможны.

Зато могут быть проблемы неоднозначности:
A = ba|Ba
B = b
В этом случае строку "ba" можно описать двумя разными путями.

maytonКак постулировать "число" и "операции" над ним?
NUMBER = DIGIT | NUMBER DIGIT
DIGIT = 0|1|2|3|4|5|6|7|8|9

OPERATIONS = NUMBER OPERATOR NUMBER | OPERATIONS OPERATOR NUMBER
OPERATOR = + | - | * | /


maytonКак синтезировать строительные блоки - DO,WHILE,IF,IF-ELSE и использовать их?
STATEMENTS = STATEMENTS STATEMENT | STATEMENT
STATEMENT = WHILE_DO | DO_WHILE | IF_BLOCK | SOME_OTHER_PRIMITIVES
WHILE_DO = WHILE CONDITION DO STATEMENTS LOOP
DO_WHILE = DO STATEMENTS WHILE CONDITION
CONDITION = LOGIC_OPERAND LOGIC_OPERATOR LOGIC_OPERAND



maytonСуществует ли "контекст" аппликаций?Нет, по определению.
Вспоминай как все это называется... Хотя... Судя по "комбинаторам" и "аппликациям" Душкин не смог найти стандартные названия "терминалы" и "правила".
В общем намекаю: в нормальной литературе это называется "Context Free Grammar"...

maytonКак "оптимизировать" строковые замены?Никак. Если некоторая цепочка распознавания может быть оптимизирована - значит строку можно распознать двумя способами, оптимизированным и не оптимизированным. А значит у нас появляется неоднозначность которая совершенно недопустима.
...
Рейтинг: 0 / 0
Тяпничные комбинаторы
    #38999502
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TПогуглил
Комбинаторная логика
Комбинаторы — это просто!

Это какой-то глубокоматематический капец без намека на реальное примение. Не, может я не понял глубину, но данное чтиво может взорвать мозг, а он у меня один и я его берегу ))Ой. Нет, этого Душкина читать не надо.
Может для людей идущих из математических глубин это изложение будет удобоваримым. Но людям с программистской базой лучше начинать с автоматов различной степени детерминированности и регулярных выражений. Поняв эти две темы - формальные грамматики укладываются в голове очень даже легко.
...
Рейтинг: 0 / 0
Тяпничные комбинаторы
    #38999719
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owlmayton Тема - комбинаторная логика (КЛ). Опущу детали. Интересущиеся почитают книжку Душкина или Вики.
Или более фундаментальные труды Хаскелла Карри. Вкратце.
эээээ.... как бы сказать помягче.
Не надо их читать. Есть намного более лучшие, понятные и поступательно развивающие тему книги.
Можешь начать с Michael Sipser, Introduction to the Theory of Computation.

Эта книга?
http://cglab.ca/~michiel/TheoryOfComputation/TheoryOfComputation.pdf

Душкина я не листал, но судя по нестандартности терминов которые ты использовал - читать его не надо.
А Curry тут слегка не в тему, тебя зацепил разбор грамматик, а у Curry это мизерный этап, к Curry надо приходить уже хорошо разбираясь в грамматиках.
Душкин вообще пишет в тему Haskell. А комбинаторы - просто небольшой раздел в книге.
...
Рейтинг: 0 / 0
Тяпничные комбинаторы
    #38999724
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечность? А что ты под этим понимаешь?

И да, рекурсии возможны.
Вот тебе рекурсия:
A = Aa | ɛ
А зацикливания невозможны.

Я здесь не понимаю что обозначает символ |
И не понимаю как толковать комбинатор А.
...
Рейтинг: 0 / 0
Тяпничные комбинаторы
    #38999727
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NUMBER = DIGIT | NUMBER DIGIT
DIGIT = 0|1|2|3|4|5|6|7|8|9

OPERATIONS = NUMBER OPERATOR NUMBER | OPERATIONS OPERATOR NUMBER
OPERATOR = + | - | * | /
Нет нет. Это не то. Данная форма ЕМНИП называется ЕБНФ или разновидность ее.
И кажется надо ставить не равно а двоеточие и равно "::=".

Она описывает "возможность" применения дерева разбора к числовому выражению
типа NUMBER. Но на этом возможности Яков и Бизонов заканчиваются.

Меня-же интересует другое. Формализация операций над целыми. Через индукцию.

Например:

Код: plaintext
1.
1 + 4 = 1 + (1 + (1 + (1 + 1)))



Вобщем вроде как то вот так.
...
Рейтинг: 0 / 0
Тяпничные комбинаторы
    #38999730
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никак. Если некоторая цепочка распознавания может быть оптимизирована - значит строку можно распознать двумя способами, оптимизированным и не оптимизированным. А значит у нас появляется неоднозначность которая совершенно недопустима.
Возможно я другое имел в виду. К примеру если я строю некую комбинаторную
машину, то я расчитываю что в выражении
Код: plaintext
1.
WS(BWB)a


при выполнении аппликаций я вынужден буду либо выполнять поочерёдно
всю последовательность нужных преобразований внутри строки либо
строить доп. структуры данных (бинарные деревья) для оптимизации
вычислений (особенно если формула будет в 100 или в 10000 крат
превышать образец который я привёл выше).
...
Рейтинг: 0 / 0
Тяпничные комбинаторы
    #38999770
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonКонечность? А что ты под этим понимаешь?

И да, рекурсии возможны.
Вот тебе рекурсия:
A = Aa | ɛ
А зацикливания невозможны.

Я здесь не понимаю что обозначает символ |
И не понимаю как толковать комбинатор А. Символ "|" означает "или".
В сумме это все читается:
Правило А это Правило А и символ "a" или пустая строка.
На практике - любая строка состоящая из нескольких (от нуля до бесконечности) символов "a".
...
Рейтинг: 0 / 0
Тяпничные комбинаторы
    #38999771
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЭта книга?
http://cglab.ca/~michiel/TheoryOfComputation/TheoryOfComputation.pdf
Нет, на моей книжной полке стоит другая (ISBN 9780534950972), но судя по оглавлению это тоже можно читать.

Хотя я бы поставил третью главу после четвертой и пятой. Мне кажется что надо сначала разобраться что такое определяемые и неопределяемые языки (пятая глава) прежде чем браться за внеконтестную грамматику. Но большинство учебников (включая Сипсера) со мной не согласны .... Но это мелочи на самом деле :)
...
Рейтинг: 0 / 0
Тяпничные комбинаторы
    #38999772
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonNUMBER = DIGIT | NUMBER DIGIT
DIGIT = 0|1|2|3|4|5|6|7|8|9

OPERATIONS = NUMBER OPERATOR NUMBER | OPERATIONS OPERATOR NUMBER
OPERATOR = + | - | * | /
Нет нет. Это не то.
....
Меня-же интересует другое. Формализация операций над целыми. Через индукцию.

Например:

Код: plaintext
1.
1 + 4 = 1 + (1 + (1 + (1 + 1)))



Вобщем вроде как то вот так.Вот это как раз оно и есть.
Если ты хочешь еще и скобки и знак равенства распознавать, то просто чуть усложняешь уже показанные правила:
OPERATIONS = ( OPERATIONS ) | NUMBER OPERATOR NUMBER | OPERATIONS OPERATOR NUMBER | NUMBER
LOGIC_OPERATION = OPERATIONS LOGIC_OPERATOR OPERATIONS
LOGIC_OPERATOR = = | < | > | and | or
И все.


mayton Данная форма ЕМНИП называется ЕБНФ или разновидность ее.
И кажется надо ставить не равно а двоеточие и равно "::=".
Я не знаю что такое ЕБНФ, извините. А двоеточие или равенство это не так уж важно, это зависит от используемого парсера (и учебника). В большинстве случаев правила определяются вообще стрелочкой, но я не помню ю-код символа "стрелочка", так что использовал знак равенства. Ну извините.
...
Рейтинг: 0 / 0
Тяпничные комбинаторы
    #38999773
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНикак. Если некоторая цепочка распознавания может быть оптимизирована - значит строку можно распознать двумя способами, оптимизированным и не оптимизированным. А значит у нас появляется неоднозначность которая совершенно недопустима.
Возможно я другое имел в виду. К примеру если я строю некую комбинаторную
машину, то я расчитываю что в выражении
Код: plaintext
1.
WS(BWB)a


при выполнении аппликаций я вынужден буду либо выполнять поочерёдно
всю последовательность нужных преобразований внутри строки либо
строить доп. структуры данных (бинарные деревья) для оптимизации
вычислений (особенно если формула будет в 100 или в 10000 крат
превышать образец который я привёл выше).ээээээ......
Во первых, ты никаких преобразований внутри строки не делаешь.
Во вторых, оптимизация вычислений это вещь совершенно отдельная от разбора строки.
Разбор строки это всегда превращение строки в дерево (не бинарное!). А что ты будешь делать с этим деревом потом, это уже совершенно другой вопрос и к собственно к процессу построения дерева не относится.
...
Рейтинг: 0 / 0
Тяпничные комбинаторы
    #38999790
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlmaytonЭта книга?
http://cglab.ca/~michiel/TheoryOfComputation/TheoryOfComputation.pdf
Нет, на моей книжной полке стоит другая (ISBN 9780534950972), но судя по оглавлению это тоже можно читать.

Хотя я бы поставил третью главу после четвертой и пятой. Мне кажется что надо сначала разобраться что такое определяемые и неопределяемые языки (пятая глава) прежде чем браться за внеконтестную грамматику. Но большинство учебников (включая Сипсера) со мной не согласны .... Но это мелочи на самом деле :)
Ага. Вот эта? http://www.amazon.co.uk/dp/0534950973
...
Рейтинг: 0 / 0
Тяпничные комбинаторы
    #38999923
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonАга. Вот эта? http://www.amazon.co.uk/dp/0534950973 yes
...
Рейтинг: 0 / 0
Тяпничные комбинаторы
    #39000538
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Глубоко не изучал исчисление и производные от него, потому не смогу подсказать вам сейчас, Марк. Идею касаемо обфускатора полностью поддерживаю и если вы всё-таки решите позже этим заниматься, готов присоединиться
...
Рейтинг: 0 / 0
Тяпничные комбинаторы
    #39000568
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я долго запрягаю перед тем как ехать. И вобщем-то комбинаторный код мне почему-то напомнил decaws.
Тут недавно один чел создавал свой эзотерический язык c таким названием (стековая машина с минимумом
команд). И у меня возникли корыстные идеи. Правда перед тем как их обсуждать хотелось-бы самому
понять суть КЛ и что оно даёт. В первую очередь привлекает отсутствие машины имени Тьюринга которую
мы натягиваем на любую вычислительную систему.
...
Рейтинг: 0 / 0
Тяпничные комбинаторы
    #39000576
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonТут недавно один чел создавал свой эзотерический язык c таким названием
(стековая машина с минимумом команд).
Он, видимо, никогда не слышал о Прологе...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Тяпничные комбинаторы
    #39000587
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, ты хотел сказать о Форте?
...
Рейтинг: 0 / 0
Тяпничные комбинаторы
    #39000617
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonты хотел сказать о Форте?
Нет, именно о Прологе. ЕМНИП, там четыре оператора и стэковая архитектура с бэк-трекингом.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Тяпничные комбинаторы
    #39000705
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovстэковая архитектура с бэк-трекингом .
Ого. Звучит внушительно. Не слыхал.
...
Рейтинг: 0 / 0
25 сообщений из 37, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Тяпничные комбинаторы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]