6

मुझे पता है कि हास्केल फ़ंक्शंस का सेट केवल सभी गणितीय कार्यों का सबसेट है, क्योंकि यह एक प्रोग्रामिंग भाषा है, इसलिए इसके सभी कार्यों को गणना योग्य होना चाहिए। लेकिन क्या यह सच है कि गणितीय दृष्टिकोण से सभी हास्केल फ़ंक्शन (और सामान्य रूप से शुद्ध कार्य) continuous हैं?कार्यात्मक प्रोग्रामिंग में सभी शुद्ध कार्य निरंतर हैं?

+1

@ हैरी डेवलपर 1212 मुझे लगता है कि यह एक अच्छा सवाल है। मैंने कुछ संपादनों को (मुझे आशा है) स्पष्ट किया है कि मैं इस सवाल को समझने के लिए क्या समझता हूं। यदि आप मेरे परिवर्तनों से नाखुश हैं, तो इसे वापस रखने के लिए [अपने प्रश्न संपादित करें] (http://stackoverflow.com/posts/34617662/edit) को नि: शुल्क महसूस करें। –

उत्तर

18

स्कॉट निरंतरता के अर्थ में कम्प्यूटेबल फ़ंक्शन निरंतर हैं, जो आपके द्वारा लिंक किए गए विकिपीडिया पृष्ठ के दूसरे पैराग्राफ में उल्लिखित हैं।

एक समारोह जो है नहीं निरंतर है (छद्म हास्केल)

isInfinite :: [a] -> Bool 
isInfinite xs 
    | {- xs is an infinite list x0 : x1 : x2 : ... -}  = True 
    | {- xs is a finite list x0 : x1 : x2 : ... : xn : [] -} = False 
    | {- xs is a list with diverging spine 
          x0 : x1 : x2 : ... : xn : _|_ -} = _|_ 

यह निरंतर हो सकता है क्योंकि

() :() :() : ... 

अनुक्रम

की supremum है विफल रहता है का एक उदाहरण
_|_ 
() : _|_ 
() :() : _|_ 
... 

लेकिन

True = isInfinite (() :() :() : ...) 

, अनुक्रम

_|_ = isInfinite (_|_) 
_|_ = isInfinite (() : _|_) 
_|_ = isInfinite (() :() : _|_) 
... 

गणनीय कार्यों निरंतर कर रहे हैं की supremum नहीं है अनिवार्य रूप से, क्योंकि समय की एक निश्चित राशि में एक समारोह केवल अपने इनपुट की एक निश्चित राशि का निरीक्षण कर सकते हैं। तो यदि एक कम्प्यूटेबल फ़ंक्शन लौटाता है, तो True किसी विशेष इनपुट पर, इसे इनपुट के सेट में प्रत्येक इनपुट पर True वापस करना होगा जो अवलोकनों के एक निश्चित सीमित संग्रह पर मूल इनपुट से सहमत है। कोई भी बढ़ता अनुक्रम जो मूल इनपुट में परिवर्तित होता है अंततः इस सेट के अंदर जमीन और रहने के लिए होगा, इसलिए इस बढ़ते अनुक्रम पर फ़ंक्शन के मानों का अनुक्रम True तक पहुंच जाएगा।

एक सतत कार्य आवश्यक रूप से गणना योग्य नहीं है। उदाहरण के लिए कोई आदेश-संरक्षण (यानी f _|_ = _|_, या f स्थिर है) फ़ंक्शन Integer -> Bool निरंतर है, क्योंकि Integer एक फ्लैट डोमेन है। लेकिन निश्चित रूप से केवल उनमें से कई computable हैं।

+0

उत्कृष्ट, स्पष्ट उत्तर। – luqui

संबंधित मुद्दे