Eric Normand
Eric Normand

Reputation: 3836

Why don't the Data.Text examples work for me?

Here's what I tried to do in ghci:

import Data.Text
strip "  abc  "

I get this error message:

<interactive>:1:6:
    Couldn't match expected type `Text' against inferred type `[Char]'
    In the first argument of `strip', namely `"  abc  "'
    In the expression: strip "  abc  "
    In the definition of `it': it = strip "  abc  "

I was expecting this to work because it was given on many web pages including this answer: In Haskell, how do you trim whitespace from the beginning and end of a string?

What am I doing wrong?

Upvotes: 9

Views: 2132

Answers (3)

matrixmike
matrixmike

Reputation: 31

{-# OPTIONS_GHC -fwarn-missing-signatures #-}
{-# LANGUAGE OverloadedStrings #-}

import Data.Text as MJ

main :: IO()
main = do

      print $ strip $ pack "  abc  "
      print  $ MJ.intercalate "as" ["1","2","3"]

Upvotes: 0

Daniel Wagner
Daniel Wagner

Reputation: 152682

You should either start ghci using ghci -XOverloadedStrings or, if you are already in ghci and don't want to exit, set the flag dynamically using :set -XOverloadedStrings.

Upvotes: 11

sepp2k
sepp2k

Reputation: 370092

You'll need to enable overloaded string literals in order to use string literals as Text values (otherwise string literals will always have the type String = [Char]).

Without overloaded string literals, you'll have to use pack to create a Text from a String, so:

strip $ pack "  abc  "

Upvotes: 16

Related Questions