This might be a really noobish question, but I can't get past this problem (as I just started learning Haskell).
I have a simple block of code:
module SomeTest where
import Data.Text
str = replace "ofo" "bar" "ofofo"
If I call this with str
, I get:
<interactive>:108:19: error: * Couldn't match expected type `Text' with actual type `[Char]' * In the first argument of `Data.Text.replace', namely `"ofo"' In the expression: Data.Text.replace "ofo" "bar" "ofofo" In an equation for `it': it = Data.Text.replace "ofo" "bar" "ofofo" <interactive>:108:25: error: * Couldn't match expected type `Text' with actual type `[Char]' * In the second argument of `Data.Text.replace', namely `"bar"' In the expression: Data.Text.replace "ofo" "bar" "ofofo" In an equation for `it': it = Data.Text.replace "ofo" "bar" "ofofo" <interactive>:108:31: error: * Couldn't match expected type `Text' with actual type `[Char]' * In the third argument of `Data.Text.replace', namely `"ofofo"' In the expression: Data.Text.replace "ofo" "bar" "ofofo" In an equation for `it': it = Data.Text.replace "ofo" "bar" "ofofo"
I don't know why I'm getting this error and how to get pass it. Isn't Text
just a synonym for [Char]
?
Unfortunately, Haskell has several conflicting types for strings of characters. String literals are usually of type String
which is just an alias for [Char]
. Because that is an inefficient representation of strings, there are alternatives, like Text
.
In your case, adding {-# LANGUAGE OverloadedStrings #-}
as the first line of your program will make it compile. Basically your string literals can be of type Text
then.
In the case of ghci
you can run :set -XOverloadedStrings
.
In my case I had code that was doing concatenation of a String and Text value:
"cd " ++ stackProjectLocation
"cd "
was being of type Text because of using {-# LANGUAGE OverloadedStrings #-}
And stackProjectLocation
was a String
The solution was to use (<>) :: Semigroup a => a -> a -> a
:
"cd " <> stackProjectLocation
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With