我将(严格)ByteString
传递给期待System.IO.FilePath
的内容,该内容声明为type FilePath = String
。我也在使用{-# LANGUAGE OverloadedStrings #-}
。我在某些地方的转换是自动发生的,但在这里却没有。我有什么问题?
Main.hs:33:40: error:
• Couldn't match type ‘ByteString’ with ‘[Char]’
Expected type: FilePath
Actual type: ByteString
答案 0 :(得分:4)
IIRC,OverloadedStrings
扩展程序无法在不同类型的数据之间实现神奇转换。它的作用是当你编写像"foo"
这样的字符串文字时,编译器不仅可以将该文字视为String
,还可以视为ByteString
。
您可能需要unpack
之类的内容才能将ByteString
转换为String
。