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


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.