OverloadedStrings を使うと文字列を、Text、ByteString リテラルとして扱ってくれる。

OverloadedStrings 言語拡張を使うとダブルクオートで囲んだ文字列を、Text、ByteString リテラルとして扱ってくれるようになります。あどけない話・Haskellライブラリ入門 (2011年版)

{-# LANGUAGE OverloadedStrings #-} 

module Main where

import qualified Data.Text as T
import GHC.Exts( IsString(..) )

greet :: T.Text -> T.Text
greet "hello" = "world"
greet other = other

greetTest :: T.Text
greetTest = greet "hello"

main = do
    print $ greet "hello"
    print $ greet "fool"
> :main
"world"
"fool"

-- String 型でなくText型なのを確認してみる。
> :t greetTest  --> greetTest :: T.Text

これはTextにIsStringインスタンスが定義されているからで、新たに定義した型を IsString のインスタンスにすることで、文字列リテラルから解釈される型を追加できるそうです。

> :i IsString
class IsString a where
  fromString :: String -> a
  	-- Defined in `Data.String'
instance IsString T.Text -- Defined in `Data.Text'
instance IsString [Char] -- Defined in `Data.String'

参考