Frage

Ich habe überlastet Strings aktiviert, aber ich kann sie nicht an die Arbeit:

$ cat overloadedstrings.hs 
{-# LANGUAGE OverloadedStrings #-}

import qualified Data.ByteString as B
import qualified Data.ByteString.Lazy as BL

lazy :: BL.ByteString
lazy = "I'm a lazy ByteString"

strict :: B.ByteString
strict = "I'm a strict ByteString"

$ ghci
GHCi, version 6.12.1: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude> :l overloadedstrings.hs 
[1 of 1] Compiling Main             ( overloadedstrings.hs, interpreted )

overloadedstrings.hs:7:7:
    No instance for (Data.String.IsString BL.ByteString)
      arising from the literal `"I'm a lazy ByteString"'
                   at overloadedstrings.hs:7:7-29
    Possible fix:
      add an instance declaration for
      (Data.String.IsString BL.ByteString)
    In the expression: "I'm a lazy ByteString"
    In the definition of `lazy': lazy = "I'm a lazy ByteString"

overloadedstrings.hs:10:9:
    No instance for (Data.String.IsString B.ByteString)
      arising from the literal `"I'm a strict ByteString"'
                   at overloadedstrings.hs:10:9-33
    Possible fix:
      add an instance declaration for (Data.String.IsString B.ByteString)
    In the expression: "I'm a strict ByteString"
    In the definition of `strict': strict = "I'm a strict ByteString"
Failed, modules loaded: none.

Wo importiere ich die IsString Instanzen für ByteString aus? Sollte dies nicht automatisch geschehen? Was mache ich falsch?

War es hilfreich?

Lösung

Sie müssen die .Char8 Module wie Data.ByteString.Char8 und Data.ByteString.Lazy.Char8

importieren
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top