हास्केल के पास एक अंतर्निहित पुस्तकालय if/then/else
है, जो Bool
एक साधारण पुस्तकालय समारोह के बजाय, प्रकार पर निर्भर है ? जैसे कि
if :: Bool -> a -> a -> a
if True x _ = x
if False _ y = y
हास्केल के पास एक अंतर्निहित पुस्तकालय if/then/else
है, जो Bool
एक साधारण पुस्तकालय समारोह के बजाय, प्रकार पर निर्भर है ? जैसे कि
if :: Bool -> a -> a -> a
if True x _ = x
if False _ y = y
जवाबों:
यह अच्छा चीनी के लिए विशुद्ध रूप से है if
, then
और else
कीवर्ड; वास्तव में, जीएचसी ( RebindableSyntax
विस्तार सक्षम होने के साथ) सिंटैक्स को केवल ifThenElse
फ़ंक्शन के दायरे में जो भी हो, उसे कॉल करके अलग कर देगा ।
यह बहुत ज्यादा मायने नहीं रखता है ... मेरे लिए ऐसा लगता है जैसे कि / फिर / अन्यथा आजकल बहुत अधिक उपयोग नहीं किया जाता है। मैं अपने आप को पैटर्न गार्ड लिख रहा हूँ अगर .. अगर ..
एक वाक्यात्मक दृष्टिकोण से, हालांकि, यह अच्छा है
if expr1 then expr2 else expr3
तो आप लिख सकते हैं
if foo a then bar b else baz c
के बजाय
if (foo a) (bar b) (baz c)
जो मुझे बहुत थोड़ा सा लगता है।
सिमेंटिक एनालिसिस और कोड जेनरेशन के लिए, यह निर्माण अच्छा है, जिसे आसानी से कुशल मशीन कोड में संकलित किया जा सकता है। ध्यान दें कि कोड उस हिस्से को छोड़ सकता है जो उस शाखा के लिए थंक बनाता है जो पहुंच नहीं गया है, फ़ंक्शन कॉल के विपरीत, जहां (अविकसित) पैरामीटर सभी पास होने चाहिए। लेकिन यह भी समय (और स्मृति, कि बाद में पुनः प्राप्त किया जाना चाहिए) को बनाने के लिए समय लगता है। इस पर अच्छा बनाने के लिए, हर जगह अगर फ़ंक्शन को इनलाइन करना होगा।