Haskell 无法在Word8上进行模式匹配
在我的仆人/Wai应用程序中,我想将所有请求从“domain.com”重定向到“www.domain.com” 我知道这意味着什么,我认为课堂展示应该是针对Word8实现的,如果不是,一定有原因。也许我做得不对 我怎样才能解决这个问题,或者用另一种更好的方法来解决 更新: 我无法将其编译:Haskell 无法在Word8上进行模式匹配,haskell,haskell-wai,servant,Haskell,Haskell Wai,Servant,在我的仆人/Wai应用程序中,我想将所有请求从“domain.com”重定向到“www.domain.com” 我知道这意味着什么,我认为课堂展示应该是针对Word8实现的,如果不是,一定有原因。也许我做得不对 我怎样才能解决这个问题,或者用另一种更好的方法来解决 更新: 我无法将其编译: -- 1 Just host -> do case BS.isPrefixOf (BS.pack $ show "www") host of -- 2 Just host -> do
-- 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
总是存在类型不匹配。模式“www”:rest
意味着类型[[Char]]]
,而您需要[Char]
。以下是您的模式:
'w':'w':'w':rest
哦。您应该使用Data.ByteString.Char8.unpack
(或者Data.ByteString.Lazy.Char8.unpack
,如果它是惰性的)来匹配字符。否则,您需要使用'w'
的ASCII码而不是字符。模式“www”:rest
表示类型[[Char]]
,而您需要[Char]
。以下是您的模式:
'w':'w':'w':rest
哦。您应该使用
Data.ByteString.Char8.unpack
(或者Data.ByteString.Lazy.Char8.unpack
,如果它是惰性的)来匹配字符。否则,您需要使用ASCII代码'w'
而不是字符。这可能会有帮助(如果有,请记住将错误消息粘贴到谷歌搜索中会产生奇迹):也许这会有帮助(如果有,请记住将错误消息粘贴到谷歌搜索中会产生奇迹):@user6250601您的ByteString似乎很严格。使用Data.ByteString.Char8.unpack
而不是Data.ByteString.Lazy.Char8.unpack
@user6250601请密切注意模块名称和类型。类型Data.ByteString.ByteString
和Data.ByteString.Lazy.ByteString
是不同的!您的错误是由于对严格的ByteString使用Data.ByteString.Lazy
API造成的,而只有Data.ByteString
和Data.ByteString.Char8
适用于它。@user6250601似乎您的ByteString是严格的。使用Data.ByteString.Char8.unpack
而不是Data.ByteString.Lazy.Char8.unpack
@user6250601请密切注意模块名称和类型。类型Data.ByteString.ByteString
和Data.ByteString.Lazy.ByteString
是不同的!您的错误是由于对严格的ByteString使用Data.ByteString.Lazy
API造成的,而只有Data.ByteString
和Data.ByteString.Char8
适用于它。
'w':'w':'w':rest