2011-06-15 11 views
8

Esto es lo que he intentado hacer en ghci:¿Por qué los ejemplos de Data.Text no me funcionan?

import Data.Text 
strip " abc " 

me sale este mensaje de error:

<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 " 

que estaba esperando que esto funcione, ya que se da en muchas páginas web, incluyendo esta respuesta: In Haskell, how do you trim whitespace from the beginning and end of a string?

¿Qué estoy haciendo mal?

Respuesta

15

Necesitará habilitar overloaded string literals para utilizar literales de cadena como valores Text (de lo contrario, los literales de cadena siempre tendrán el tipo String = [Char]).

Sin literales de cadena sobrecargados, que tendrá que utilizar para crear un packText de un String, por lo que:

strip $ pack " abc " 
+5

cadenas sobrecargados son más fáciles de activar añadiendo el pragma a la primera línea de su archivo .hs: '{- # IDIOMA OverloadedStrings # -}' –

10

Usted debe comenzar ya sea utilizando ghci ghci -XOverloadedStrings o, si ya está en ghci y don 't desea salir, establecer el indicador dinámicamente usando :set -XOverloadedStrings.

0
{-# 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"] 
+0

voy a tratar de mejorar mi formato - lo anterior es una ejemplo de un archivo .hs en funcionamiento utilizando las opciones ghc identificadas con {- # text # -}. – matrixmike

Cuestiones relacionadas