Пакет fastCGI фактически является расширением пакета cgi , который включает в себя типы протоколов для приема данных запроса и возврата страниц результатов. Я бы предложил начать с CGI, а затем перейти к fastCGI, как только вы узнаете, что делаете.
Вы также можете посмотреть этот урок .
Изменить, чтобы ответить на вопросы об учебнике:
«Может быть, a» - это тип, который может содержать «Just a» или «Nothing». Большинство языков используют нулевой указатель, чтобы указать, что данных нет, но в Haskell нет нулевых указателей. Таким образом, у нас есть явный тип «Может быть» вместо случаев, когда данные могут быть нулевыми. Два конструктора («Just» и «Nothing») вместе с типом заставляют вас явно разрешить нулевой случай, когда это может произойти, но также позволяют игнорировать его, когда это не может произойти.
Функция "Maybe" - это универсальный экстрактор для типов Maybe. Подпись:
maybe :: b -> (a -> b) -> Maybe a -> b
Если взять аргументы спереди назад, третий аргумент «Может быть» - это значение, с которым вы пытаетесь работать. Второй аргумент - это функция, вызываемая, если третий аргумент - «Just v», и в этом случае результат - «f v». Первый аргумент является значением по умолчанию и возвращается, если третьим является «Nothing».
В этом случае хитрость заключается в том, что функция "cgiMain" вызывается дважды. Если он находит поле ввода «name», тогда переменная «mn» будет установлена в («Just» Joe Bloggs »), в противном случае она будет установлена в (Nothing). (Я использую скобки для разделения значений, потому что для строк используются кавычки).
Таким образом, вызов "Maybe" возвращает страницу для отображения. Первый раз без указания имени, поэтому «mn» - это (Nothing), и по умолчанию возвращается страница «inputForm» для рендеринга. Когда пользователь нажимает кнопку «Отправить», запрашивается тот же URL-адрес, но на этот раз с установленным полем «имя», поэтому теперь вы получаете функцию «greet», вызываемую с именем в качестве аргумента, поэтому она говорит «Hello Joe Bloggs».