?

Log in

No account? Create an account
entries friends calendar profile Previous Previous Next Next
Рефал и Prolog - ruik-ruik! röhh-röhh!
raydac
raydac
Рефал и Prolog
в предыдущей записи спросили насчет Prolog (разработан в 1972м) и Рефал (разработан в 1966м Турчиновым), то решил показать наглядно разницу
вот программа вычисления палиндрома на Рефал (из википедии)
Palindrom {
     s.1 e.2 s.1 =  ;
     s.1 = True ;
     = True;
     e.1 = False ;
 }


достаточно компактно, видно, что язык имеет паттернматчинг и доступ к отдельным символам
накидал аналог на Prolog

% получить список без последнего элемента, вспомогательное описание того что понимаем под серединой слова
отброситьПоследний([Символ],[],Символ):-!.
отброситьПоследний([Символ1,Символ2],[Символ1],Символ2):-!.
отброситьПоследний([Символ|Хвост],Результат,Отброшенный):-Результат=Символ|БезПоследнего],отброситьПоследний(Хвост,БезПоследнего,Отброшенный).

% проверить на палиндром
палиндром([Символ]) :- !.
палиндром([Символ,Символ]) :- !.
палиндром([Символ|Хвост]) :- отброситьПоследний(Хвост,Середина,Отброшенный), Символ = Отброшенный, палиндром(Середина).


?- atom_chars('aabbccddeeffttttffeeddccbbaa',Chars),палиндром(Chars).


Prolog в отличии от РЕФАЛ работает скорее с деревьями и получить доступ к чему то лежащему не в нечале, не столь просто как в РЕФАЛ и надо описать компьютеру что мы понимаем под понятием "середина слова" скажем. Понимаени программы на Prolog весьма просто и для незнающего программирование на этом языке, достаточно узнать, что ':-' это ЕСЛИ, ':-!.' это НЕ ИЩИ ДАЛЬШЕ, а ',' это И

Tags: ,

8 comments or Leave a comment
Comments
1500py470 From: 1500py470 Date: December 12th, 2015 10:31 am (UTC) (Link)
Очевидно потому как живые рефалописатели с написанием сапра для моделирования оптики и моделирования тепловых потоков трудились, то им с ним топологиями разными заниматься сподручнее было (наверное, хотя может для остепенения с ним было проще)

Edited at 2015-12-12 10:32 am (UTC)
raydac From: raydac Date: December 12th, 2015 10:33 am (UTC) (Link)
удивительно, но в вконтакте есть группа по рефалу https://vk.com/club867713 интересно
1500py470 From: 1500py470 Date: December 12th, 2015 10:35 am (UTC) (Link)
Воистину вконтакт велик! Не ожидал такого.
1500py470 From: 1500py470 Date: December 12th, 2015 11:03 am (UTC) (Link)
Удивително, полсотни человек моложе 30 и РЕФАЛ, это надо попробовать осмыслить.
raydac From: raydac Date: December 12th, 2015 11:09 am (UTC) (Link)
вижу там в группе одного знакомого преподавателя, скорее всего большая часть это его студенты
1500py470 From: 1500py470 Date: December 12th, 2015 11:12 am (UTC) (Link)
Это не Соболев из МИЭМ случайно?
raydac From: raydac Date: December 12th, 2015 11:16 am (UTC) (Link)
не, там из бауманки
1500py470 From: 1500py470 Date: December 12th, 2015 11:18 am (UTC) (Link)
У многих профили закрыты, не проверишь гипотизы, но мысли о влиянии родителей и преподавателей наиболее вероятны.
8 comments or Leave a comment