Можно ли написать нескончаемый веб-сервер в агде? - PullRequest
0 голосов
/ 12 октября 2018

Ответы на другие вопросы объяснили, что все программы Agda заканчиваются.

Насколько я понимаю, завершение любой действующей программы Adga - это требование, регулируемое усовершенствованной системой зависимых типов Agda.Это строгое требование, похоже, устранит множество ошибок.Тем не менее, также кажется, что запрет на не завершающиеся программы не позволит языку выразить некоторые полезные программы.Например, сервер - это программа, в которой возможность прерывания является критическим аспектом его функции.

Можно ли написать сервер в Agda?Я полагаю, что в этом случае можно практически обойти ограничение без прерываний, настроив сервер в конечном итоге завершить работу в течение миллиарда лет или около того.Но мне интересно, есть ли какая-то хитрость системы типов, которая может позволить Agda выражать некоторые такие не завершающиеся программы, возможно, только те, которые достигают статического замкнутого цикла какого-то рода.Если нет, то теоретически можно было бы когда-нибудь придумать такой трюк?

Без этой возможности кажется, что концепция Агды принципиально ограничена в наборе полезных программ, которые она может выразить.

1 Ответ

0 голосов
/ 13 октября 2018

Все программы Agda должны быть всего .Это означает, что:

  • рекурсивные программы должны завершаться
  • corecursive программы должны быть продуктивными

Производительность означает, что любое конечное наблюдение за процессом должно возвращатьсяответ за конечное время.Сервер будет основной программой, предлагающей пользователю набор команд, которые он может выдавать, возвращая ответ за конечное время и (если применимо), предлагая следующий набор команд.

...