हास्केल: स्ट्रिंग में इंट को परिवर्तित करना


198

मुझे पता है कि आप इसे Stringएक नंबर में बदल सकते हैं read:

Prelude> read "3" :: Int
3
Prelude> read "3" :: Double 
3.0

लेकिन आप Stringएक Intमूल्य के प्रतिनिधित्व को कैसे पकड़ते हैं ?

जवाबों:


286

के विपरीत readहै show।

Prelude> show 3
"3"

Prelude> read $ show 3 :: Int
3

38
@ लेगा: आपको यह उपयोगी लग सकता है: haskell.org/hoogle/?hoogle=Int+-%3E/rring ।
— kennytm

3
@ केनीटीएम बहुत से लोगों को वह लिंक उपयोगी लगेगा! अकेले एक लिंक +1 है, लेकिन यह दिखाने के लिए कि इसका उपयोग कैसे करना है ... यह +10 धन्यवाद :)
— CoR

ध्यान दें कि कुछ संगठन / मानक इसके अत्यधिक बहुरूपता के कारण "शो" के उपयोग को दृढ़ता से हतोत्साहित करते हैं। एक प्रकार-विशिष्ट फ़ंक्शन (या, सबसे खराब स्थिति, शो के चारों ओर आवरण) सहायक होगा।
— जॉन विट्टे

@JonWatte "हो सकता है", "नहीं" होगा। इस प्रश्न की व्यापकता के स्तर पर, मुझे नहीं लगता कि आपका सुझाव कार्रवाई योग्य है।
— डुप्लोड

वहाँ usyng प्रणाली कार्यों के बिना मैन्युअल रूप से ऐसा करने का एक तरीका है?
— लेसोनार्ज़नोव

4

चक के उत्तर पर आधारित एक उदाहरण:

myIntToStr :: Int -> String
myIntToStr x
    | x < 3     = show x ++ " is less than three"
    | otherwise = "normal"

ध्यान दें कि showतीसरी पंक्ति के बिना संकलन नहीं होगा।


4

कोई भी जो बस हास्केल से शुरू कर रहा है और एक इंट, प्रिंट का उपयोग करने की कोशिश कर रहा है:

module Lib
    ( someFunc
    ) where

someFunc :: IO ()
x = 123
someFunc = putStrLn (show x)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.