खोज…


टिप्पणियों

पूर्णांक साहित्य

एक दशमलव बिंदु के बिना एक अंक है

उदाहरण के लिए 0 , 1 , 42 , ...

परोक्ष करने के लिए लागू किया जाता है fromInteger जो का हिस्सा है Num प्रकार वर्ग तो यह वास्तव में टाइप है Num a => a - यह है कि यह किसी भी प्रकार का एक उदाहरण है कि हो सकता है Num


आंशिक साहित्य

एक दशमलव बिंदु के साथ एक अंक है

उदाहरण के लिए 0.0 , -0.1111 , ...

fromRational रूप से लागू किया fromRational जो Fractional प्रकार वर्ग का हिस्सा है, इसलिए यह वास्तव में a => a - प्रकार a => a - यह है कि किसी भी प्रकार का हो सकता है जो Fractional का एक उदाहरण है


स्ट्रिंग साहित्य

यदि आप भाषा एक्सटेंशन को OverloadedStrings जोड़ते हैं तो GHC में आप String -लिटरल के लिए समान हो सकते हैं जो तब Data.String.IsString प्रकार वर्ग से fromString लागू होते हैं

इसका उपयोग अक्सर String को Text या ByteString से बदलने के लिए किया जाता है।


सूची का साहित्य

सूचियों को [1, 2, 3] शाब्दिक वाक्य रचना के साथ परिभाषित किया जा सकता है। जीएचसी 7.8 और उसके बाद, यह OverloadedLists साथ अन्य सूची जैसी संरचनाओं को परिभाषित करने के लिए भी इस्तेमाल किया जा सकता है।

डिफ़ॉल्ट रूप से, [] का प्रकार है:

> :t []
[] :: [t]

OverloadedLists साथ, यह बन जाता है:

[] :: GHC.Exts.IsList l => l

पूर्णांक संख्या

शाब्दिक का प्रकार

Prelude> :t 1
1 :: Num a => a

एनोटेशन के साथ एक ठोस प्रकार चुनना

आप तब तक निर्दिष्ट कर सकते हैं जब तक कि लक्ष्य प्रकार एक एनोटेशन के साथ Num :

Prelude> 1 :: Int
1
it :: Int
Prelude> 1 :: Double
1.0
it :: Double
Prelude> 1 :: Word
1
it :: Word

यदि कंपाइलर शिकायत नहीं करेगा

प्रस्तावना> 1 :: स्ट्रिंग

<interactive>:
    No instance for (Num String) arising from the literal `1'
    In the expression: 1 :: String
    In an equation for `it': it = 1 :: String

तैरता हुआ अंक

शाब्दिक का प्रकार

Prelude> :t 1.0
1.0 :: Fractional a => a

एनोटेशन के साथ एक ठोस प्रकार चुनना

आप प्रकार को एनोटेशन के साथ निर्दिष्ट कर सकते हैं। केवल आवश्यकता यह है कि प्रकार में एक Fractional उदाहरण होना चाहिए।

Prelude> 1.0 :: Double
1.0
it :: Double
Prelude> 1.0 :: Data.Ratio.Ratio Int
1 % 1
it :: GHC.Real.Ratio Int 

यदि कंपाइलर शिकायत नहीं करेगा

Prelude> 1.0 :: Int
<interactive>:
    No instance for (Fractional Int) arising from the literal `1.0'
    In the expression: 1.0 :: Int
    In an equation for `it': it = 1.0 :: Int

स्ट्रिंग्स

शाब्दिक का प्रकार

किसी भी एक्सटेंशन के बिना, एक स्ट्रिंग शाब्दिक का प्रकार - यानी, दोहरे उद्धरणों के बीच कुछ - बस एक स्ट्रिंग है, वर्णों की उर्फ सूची:

Prelude> :t "foo"
"foo" :: [Char]

हालाँकि, जब OverloadedStrings एक्सटेंशन सक्षम हो जाता है, तो स्ट्रिंग शाब्दिक पॉलीमोर्फिक बन जाते हैं, संख्या शाब्दिक के समान:

Prelude> :set -XOverloadedStrings
Prelude> :t "foo"
"foo" :: Data.String.IsString t => t

यह हमें किसी भी स्पष्ट रूपांतरण की आवश्यकता के बिना स्ट्रिंग-प्रकार के मूल्यों को परिभाषित करने की अनुमति देता है। संक्षेप में, OverloadedStrings fromString एक्सटेंशन जेनेरिक कनवर्ज़न फ़ंक्शन से जेनरिक में प्रत्येक स्ट्रिंग शाब्दिक को लपेटता है, इसलिए यदि संदर्भ String बजाय अधिक कुशल Text मांग करता है, तो आपको उस बारे में चिंता करने की आवश्यकता नहीं है।

स्ट्रिंग शाब्दिक का उपयोग करना

{-# LANGUAGE OverloadedStrings #-}

import Data.Text (Text, pack)
import Data.ByteString (ByteString, pack)


withString :: String
withString = "Hello String"

-- The following two examples are only allowed with OverloadedStrings

withText :: Text
withText = "Hello Text"      -- instead of: withText = Data.Text.pack "Hello Text"

withBS :: ByteString
withBS = "Hello ByteString"  -- instead of: withBS = Data.ByteString.pack "Hello ByteString"

ध्यान दें कि कैसे हम स्पष्ट रूप से स्ट्रिंग को एन्कोड करने के लिए प्रत्येक प्रकार के pack फ़ंक्शन का उपयोग करने के बजाय साधारण String (या [Char] ) मानों का निर्माण करते हैं, उसी तरह से Text और ByteString मूल्यों का निर्माण करने में सक्षम थे।

OverloadedStrings भाषा एक्सटेंशन के बारे में अधिक जानकारी के लिए, विस्तार प्रलेखन देखें।

सूची का साहित्य

जीएचसी का ओवरलोडेडलिस्ट आपको सूची शाब्दिक सिंटैक्स के साथ सूची जैसी डेटा संरचनाओं का निर्माण करने की अनुमति देता है।

यह आपको इस तरह Data.Map करने की अनुमति देता है:

> :set -XOverloadedLists
> import qualified Data.Map as M
> M.lookup "foo" [("foo", 1), ("bar", 2)]
Just 1

इसके बजाय (अतिरिक्त M.fromList के उपयोग पर ध्यान दें):

> import Data.Map as M
> M.lookup "foo" (M.fromList [("foo", 1), ("bar", 2)])
Just 1


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow