2011-06-15 7 views
8

यहां मैंने ghci में क्या करने की कोशिश की है:डेटा क्यों नहीं है। पाठ उदाहरण मेरे लिए काम करते हैं?

import Data.Text 
strip " abc " 

मुझे यह त्रुटि संदेश मिलता है:

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

मैं इसे काम करने की उम्मीद कर रहा था क्योंकि यह इस उत्तर सहित कई वेब पृष्ठों पर दिया गया था: In Haskell, how do you trim whitespace from the beginning and end of a string?

मैं क्या गलत कर रहा हूँ?

उत्तर

15

आप (अन्यथा स्ट्रिंग शाब्दिक हमेशा प्रकार String = [Char] होगा) आदेश Text मूल्यों के रूप में स्ट्रिंग शाब्दिक का उपयोग करने के overloaded string literals को सक्षम करना होगा।

अतिभारित स्ट्रिंग शाब्दिक बिना

, तो आप ऐसा pack उपयोग करने के लिए एक String से एक Text बनाना होगा,:

strip $ pack " abc " 
+5

अतिभारित तार अपने .hs फ़ाइल की पहली पंक्ति को pragma जोड़कर सक्षम करने के लिए सबसे आसान कर रहे हैं: '{- # भाषा OverloadedStrings # -}' –

10

आप या तो GHCi ghci -XOverloadedStrings का उपयोग शुरू कर देना चाहिए या, यदि आप GHCi और डॉन में पहले से ही कर रहे हैं बाहर निकलना नहीं चाहते हैं, :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

मैं कोशिश करते हैं और मेरी स्वरूपण पर सुधार होगा - ऊपर एक है {- # text # -} के साथ पहचाने गए ghc विकल्पों का उपयोग कर काम कर रहे .hs फ़ाइल का उदाहरण। – matrixmike

संबंधित मुद्दे