Я впервые изучаю функциональное программирование. Я понимаю, как работает простое бета-сокращение.
, например:
(\x->2*x)5
означает, что вы заменяете x на 5.
2*5=10
Однако другие примеры приводят в замешательство me
(\f->f(f 0))(\x->x+1)
Мы узнали о некоторых стратегиях оценки, нормальной форме головы и слабых нормальных формах головы.
из моих заметок, я понимаю, что нормальная форма головы означает отсутствие выражения redex, в то время как слабая Нормальная форма головы означает, что есть лямбда-абстракция.
Это не имеет никакого смысла для меня. Относится ли один из двух к этому последнему примеру? Если это так, что будет примером другой стратегии?