В моих Слугах/Wai приложение, которое я хочу redict всех запросов от «domain.com» до «www.domain.com»Невозможно сделать сопоставление с образцом на Word8
{-# LANGUAGE OverloadedStrings #-}
--.......
app :: Application
app req respond = do
case requestHeaderHost req of
Just host -> do
case BS.unpack host of
"www":rest -> respond =<< redirect' HttpTp.status302 [] "domain.com"
_ -> undefined
Nothing -> undefined
Ошибка
No instance for (Data.String.IsString GHC.Word.Word8)
arising from the literal ‘"www"’
In the pattern: "www"
Я знаю, что это значит, и я думаю, что класс Show должен был быть реализован для Word8, а если нет, то должна быть причина. Может быть, я делаю это неправильно?
Как я могу исправить это или сделать это еще лучше?
Update:
Я не могу получить его для компиляции:
-- 1
Just host -> do
case BS.isPrefixOf (BS.pack $ show "www") host of
-- 2
Just host -> do
case Text.isPrefixOf (Text.pack $ show "www") host of
-- 3
Just host -> do
case DL.isPrefixOf "www" host of
Там всегда тип несоответствия.
Возможно, это поможет (если это так, имейте в виду, что вставка сообщений об ошибках в поиск Google может творить чудеса): http://stackoverflow.com/questions/3753445/haskell-a-problem-with-the-simplest -wai-example – Kapol