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'
参考