मैं वर्तमान में SICP के माध्यम से हास्केल के साथ काम कर रहा हूं। व्यायाम 1.15 पूछता है कि फ़ंक्शन को कितनी बार बुलाया जाता है। विचार शायद यह है कि आपको प्रतिस्थापन विधि का उपयोग करना चाहिए, लेकिन मैं जानना चाहता हूं कि कोड में ऐसा कैसे करें।फ़ंक्शन को कितनी बार बुलाया गया था, एफपी तरीका
एक अनिवार्य भाषा में कोई वैश्विक वैरिएबल रख सकता है और हर बार फ़ंक्शन कहलाता है। लेकिन आप इसके बारे में हास्केल (या शुद्ध कार्यात्मक तरीके) में कैसे जाएंगे?
अगर केवल डीबगिंग के लिए, आप 'Debug.Trace' के' trace' फ़ंक्शन का उपयोग कर सकते हैं। यह संदर्भित पारदर्शिता तोड़ता है, लेकिन यदि आप डिबगिंग या अन्वेषण कर रहे हैं तो यह ठीक होना चाहिए। – GManNickG
अहम, मुझे लगता है कि एसआईसीपी वास्तव में गिनती को 0 या 1 होने की उम्मीद कर रहा है - जिस्ट "का मूल्यांकन किया गया है या नहीं?"। एक समारोह को कितनी बार बुलाया जाता है यह गिनने का एक पूरी तरह कार्यात्मक तरीका नहीं है। नीचे दिए गए उत्तरों अच्छे monadic "समाधान" प्रदान करते हैं, लेकिन वे संबंधित monad के भीतर "रन" होने के लिए समारोह में निर्भर करते हैं। यह एक महत्वपूर्ण नाइट-पिक है - वे सामान्य कार्यों की गणना नहीं करते हैं। –