Что такое суперкомбинаторы и постоянные аппликативные формы?

Я не могу понять, что такое суперкомбинаторы:

Суперкомбинатор - это либо константа, либо комбинатор, который содержит только суперкомбинаторы в качестве подвыражений.

А также с тем, что Constant Applicative Forms - это:

Любой суперкомбинатор, который не является абстракцией лямбды. Сюда входят действительно постоянные выражения, такие как 12, ((+) 1 2), [1,2,3], а также частично прикладные функции, такие как ((+) 4). Обратите внимание, что этот последний пример эквивалентен при eta-абстракции \ x -> (+) 4 x, что не является CAF.

Это просто не имеет никакого смысла для меня! Разве ((+) 4) не является такой же "истинно постоянной" величиной, как и 12? Для моего простого ума CAF звучат как величины.

22
задан Matt Fenwick 30 November 2011 в 18:09
поделиться

1 ответ

Мэтт прав в том, что определение сбивает с толку. Это даже противоречиво. CAF определяется как:

Любой суперкомбинатор, который не является лямбда-абстракцией. Это включает в себя действительно константные выражения, такие как 12, ((+) 1 2), [1,2,3], а также частично применяемые функции, такие как ((+) 4).

Следовательно, ((+) 4) рассматривается как CAF. Но в следующем предложении нам говорят, что это эквивалентно чему-то, что не является CAF:

этот последний пример эквивалентен при абстракции eta \ x -> (+) 4 x, который не является CAF.

Было бы яснее исключить частично примененные функции на том основании, что они эквивалентны лямбда-абстракциям.

3
ответ дан 29 November 2019 в 05:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: