Reputation: 3836
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
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
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
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