Как отмечали другие, скорее всего у вас нет .html
, настроенного для обработки PHP-кода.
Сказав это, если все, что вы делаете, использует index.html
для включения index.php
, ваш вопрос, вероятно, должен быть следующим: «Как использовать index.php
как индексный документ?
В этом случае для Apache (httpd.conf) найдите DirectoryIndex
и замените строку на это (будет работать только в том случае, если вы включили dir_module
, но это по умолчанию для большинства установок):
DirectoryIndex index.php
Если вы используете другие индексы каталогов, перечислите их в порядке предпочтения, то есть
DirectoryIndex index.php index.phtml index.html index.htm
Есть два предварительных условия для ручной реализации call / cc согласно цитате из Википедии:
Я подозреваю, что вам не понравится №2.
Чтобы написать вашу программу в стиле передачи продолжения:
Итак, используя k
в качестве имени Если аргумент продолжения, функция будет выглядеть так:
function multiplyadd(k, x, y, z) return k(x * y + z) end
Верхний уровень может использовать print
в качестве своего продолжения, поэтому вызов multiplyadd
на верхнем уровне будет выглядеть так:
multiplyadd(print, 2, 4, 1)
С этим каркасом мы можно определить call / cc как
function callcc(k,f) return f(k,k) end
. Обратите внимание, что приведенное выше multiplyadd
на самом деле обманывает, поскольку *
и +
не входят в CPS. Очень утомительно добавлять все операторы в форме CPS, заменять все функции библиотеки Lua эквивалентами CPS и переводить / генерировать весь ваш код в CPS; см. подробности здесь .
Я думаю, вы забыли часть о написании вашей программы в стиле продолжения передачи. Как только вы это сделаете, call / cc станет тривиальным (на Lua или на любом другом языке), так как продолжение будет явным параметром для всех функций (включая call / cc).
PS: кроме замыканий, вам также нужны правильные хвостовые вызовы для программирования в стиле продолжения передачи.
Отвечая на вопрос о планах для call / cc в Lua: нет никаких планов для call / cc в Lua. Захват продолжения либо слишком дорогой, либо требует некоторого анализа кода, выходящего далеко за рамки возможностей компилятора Lua. Существует также проблема в том, что Lua-продолжения могут включать части в C.
С сопрограммами, однако, мы уже можем реализовать call / cc1 в Lua (однократное продолжение). Этого достаточно для многих продолжений.
Ключевая фраза:
Можно реализовать программы в стиле передачи продолжения
(выделено мной). Вы делаете это взяв обычные программы «прямого стиля» и преобразовав их в стиль передачи с продолжением (CPS) с помощью программного преобразования, называемого преобразованием CPS . Ключевым моментом является то, что преобразование CPS call / cc
является простой функцией.
Это непрактично для программистов. Преобразование CPS имеет два применения:
Вы не хотите приблизиться к выполнению CPS-преобразований в коде Lua, особенно не вручную.