क्या टीएच के कार्यों को साइड इफेक्ट्स का उपयोग करने के लिए कोई उचित तरीका है?टेम्पलेट हास्केल और आईओ
{-# LANGUAGE TemplateHaskell #-}
module Qq where
import System.Process
import Language.Haskell.TH
version = $([| (readProcess "git" ["rev-parse", "HEAD"] "") |])
संस्करण के प्रकार के आईओ स्ट्रिंग है: कहो, मैं एक समारोह है कि संकलन समय में Git कॉल करता है और एक संस्करण स्ट्रिंग उत्पन्न करना चाहते हैं। लेकिन संस्करण रनटाइम में पूरी तरह से दुष्प्रभावों से मुक्त है, इसका संकलन समय केवल साइड इफेक्ट्स है। UnsafePerformIO का उपयोग किए बिना रनटाइम में इसे शुद्ध करने का कोई तरीका है?
jfyi, यह आपके प्रश्न से थोड़ा सा संबंधित हो सकता है: यदि आप कैबल के माध्यम से गिट से संस्करण स्ट्रिंग का अनुमान लगाना चाहते हैं तो आपको https://gist.github.com/656738 – hvr