निम्नलिखित फ़ंक्शन हस्ताक्षर को देखते हुए:
concatThings :: (Show a) => a -> String -> String
concatThings any str2 = str2 ++ (show any)
यदि concatThings "there" "hi"
चलाते हैं, तो परिणाम होगा: "hi\"there\""
, लेकिन मैं जो चाहता हूं वह सिर्फ "hithere"
है।
मैं अभी भी इस फ़ंक्शन हस्ताक्षर के साथ "यहां" कैसे प्राप्त कर सकता हूं?
1
user618815
23 जुलाई 2011, 02:18
2 जवाब
सबसे बढ़िया उत्तर
आप स्ट्रिंग को एक नए प्रकार में लपेट सकते हैं और इसके लिए एक साधारण दिखाएँ उदाहरण प्रदान कर सकते हैं:
newtype PartialString = PartialString String
instance Show PartialString where
show PartialString str = str
और फिर एक लिपटे स्ट्रिंग में concatThings
फ़ंक्शन में पास करें:
let pstr1 = PartialString str1 in concatThings pstr1 str2
3
Kris Shannon
18 फरवरी 2015, 06:26
इस फ़ंक्शन हस्ताक्षर के साथ, आप नहीं कर सकते। आपको या तो show
से छुटकारा पाना होगा, जिससे फंक्शन कम हो जाएगा
concatStrs :: String -> String -> String
concatStrs = flip (++)
या Show
को बदलने के लिए एक नए प्रकार के वर्ग का परिचय दें।
4
Fred Foo
23 जुलाई 2011, 02:33
संबंधित सवाल
नए सवाल
haskell
हास्केल एक कार्यात्मक प्रोग्रामिंग भाषा है जिसमें मजबूत स्थैतिक टाइपिंग, आलसी मूल्यांकन, व्यापक समानता और संक्षिप्तता समर्थन और अद्वितीय अमूर्त क्षमताओं की विशेषता है।
show str1
नहीं करना चाहते;str
पहले से ही एक स्ट्रिंग है, तो बसstr2 ++ str1
करें।