2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


В этом разделе нельзя создавать новые темы.

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе "Помогите решить/разобраться (М)".

Если Вы зададите новый вопрос в существующей теме, то в случае нарушения оформления или других правил форума Ваше сообщение и все ответы на него могут быть удалены без предупреждения.

Не ищите на этом форуме халяву, правила запрещают участникам публиковать готовые решения стандартных учебных задач. Автор вопроса обязан привести свои попытки решения и указать конкретные затруднения.

Обязательно просмотрите тему Правила данного раздела, иначе Ваша тема может быть удалена или перемещена в Карантин, а Вы так и не узнаете, почему.



Начать новую тему Ответить на тему
 
 лямбда-исчисление. комбинатор неподвижной точки. рекурсия
Сообщение26.01.2014, 00:17 


10/11/11
81
ни как не пойму основную идею:
как с помощью комбинатора неподвижной точки
(например такого, при ленивом вычислении $Y=\lambda f.((\lambda x.f(xx))(\lambda x.f(xx)))$)
получить лямбда-выражение, аналогичное следующей функции:
Код:
(func arg)=(if (pred arg) const (h (func (g arg))))

или следующей, если императивно
Код:
func(arg)
{
if(pred(arg))
return const;
else return h(func(g(arg)))
}

где pred, const, h и g - заданные функции,
pred возвращает $(T=\lambda t f.t)$ или $(F=\lambda t f.f)$, и соответственно $if=\lambda c x y. c x y$
?

 Профиль  
                  
 
 Re: лямбда-исчисление. комбинатор неподвижной точки. рекурсия
Сообщение26.01.2014, 00:51 
Заслуженный участник
Аватара пользователя


06/10/08
6422
Тут фишка в том, что если наша функция func определяется рекурсивно, то она является неподвижной точкой какого-то оператора: func = R func, в Вашем случае
Код:
R = λ f . λ x . if (pred x) then const else h( f (g x) ) )

 Профиль  
                  
 
 Re: лямбда-исчисление. комбинатор неподвижной точки. рекурсия
Сообщение26.01.2014, 01:40 


10/11/11
81
Цитата:
func = R func

стоп, а чему здесь func равно?
описание для func, которое дал я - не является лямбда-выражением

ааа, наверно func = YR

и с какой стороны туда аргумент подавать?
как будет выглядеть выражение с аргументом, скажем input, готовое для бета-редукции?

ааа, оно так и будет выглядеть:
Код:
func input
-> R func input
-> if (pred input) const (h (func (g input)))
/*если (pred input) -> F : */
-> h (func (g input))
/*пропустим вычисление h - она черный ящик*/
-> h (R func (g input))
-> ...


я все понял, спасибо!!!!!!!!!!!!!!!!!!!!!111

 Профиль  
                  
 
 Re: лямбда-исчисление. комбинатор неподвижной точки. рекурсия
Сообщение26.01.2014, 01:51 
Заслуженный участник
Аватара пользователя


06/10/08
6422
Верно :)

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group