Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 无法在Word8上进行模式匹配_Haskell_Haskell Wai_Servant - Fatal编程技术网

Haskell 无法在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

在我的仆人/Wai应用程序中,我想将所有请求从“domain.com”重定向到“www.domain.com”

我知道这意味着什么,我认为课堂展示应该是针对Word8实现的,如果不是,一定有原因。也许我做得不对

我怎样才能解决这个问题,或者用另一种更好的方法来解决

更新:

我无法将其编译:

-- 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