为什么ByteString不会自动转换为FilePath?

时间:2018-02-22 07:54:51

标签: haskell type-conversion bytestring overloaded-strings

我将(严格)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

1 个答案:

答案 0 :(得分:4)

IIRC,OverloadedStrings扩展程序无法在不同类型的数据之间实现神奇转换。它的作用是当你编写像"foo"这样的字符串文字时,编译器不仅可以将该文字视为String,还可以视为ByteString

您可能需要unpack之类的内容才能将ByteString转换为String