Haskell Language
ढेर
खोज…
ढेर लगाना
मैक ओएस एक्स
Homebrew का उपयोग करना:
brew install haskell-stack
एक साधारण परियोजना बनाना
हेलोवर्ल्ड रन नामक एक परियोजना बनाने के लिए:
stack new helloworld simple
यह स्टैक प्रोजेक्ट के लिए आवश्यक फाइलों के साथ helloworld
नामक एक निर्देशिका बनाएगा।
संरचना
फ़ाइल संरचना
एक साधारण परियोजना में निम्नलिखित फाइलें शामिल हैं:
➜ helloworld ls
LICENSE Setup.hs helloworld.cabal src stack.yaml
फ़ोल्डर src
Main.hs
नाम की एक फाइल है। यह helloworld
प्रोजेक्ट का "शुरुआती बिंदु" है। डिफ़ॉल्ट रूप से Main.hs
में एक सरल "हैलो, वर्ल्ड!" कार्यक्रम।
Main.hs
module Main where
main :: IO ()
main = do
putStrLn "hello world"
कार्यक्रम चला रहे हैं
सुनिश्चित करें कि आप निर्देशिका helloworld
और चलाएं:
stack build # Compile the program
stack exec helloworld # Run the program
# prints "hello world"
स्टैकेज पैकेज और एलटीएस (रिज़ॉल्वर) संस्करण को बदलना
स्टैकेज हास्केल पैकेज का भंडार है। हम इन पैकेजों को स्टैक प्रोजेक्ट में जोड़ सकते हैं।
किसी प्रोजेक्ट में लेंस जोड़ना।
स्टैक प्रोजेक्ट में एक फ़ाइल होती है, जिसे stack.yaml
कहा जाता है। stack.yaml
में ऐसा खंड है जो दिखता है:
resolver: lts-6.8
स्टैकेज lts
हर संशोधन के लिए पैकेजों की एक सूची रखता है। हमारे मामले में हम lts-6.8
के पैकेज की सूची चाहते हैं ताकि इन पैकेजों का पता लगाया जा सके:
https://www.stackage.org/lts-6.8 # if a different version is used, change 6.8 to the correct resolver number.
पैकेजों के माध्यम से, एक लेंस-4.13 है ।
अब हम helloworld.cabal
के अनुभाग को संशोधित करके भाषा पैकेज जोड़ सकते हैं:
build-depends: base >= 4.7 && < 5
सेवा:
build-depends: base >= 4.7 && 5,
lens == 4.13
जाहिर है, अगर हम एक नया LTS बदलना चाहते हैं (इसके जारी होने के बाद), हम सिर्फ रिज़ॉल्वर नंबर बदलते हैं, उदा .:
resolver: lts-6.9
अगले stack build
स्टैक LTS 6.9 संस्करण का उपयोग करेगा और इसलिए कुछ नई निर्भरताएं डाउनलोड करेगा।
स्टैक प्रोजेक्ट बनाएँ और चलाएँ
इस उदाहरण में हमारी परियोजना का नाम "हेलोवर्ल्ड" है जिसे stack new helloworld simple
के साथ बनाया गया था
पहले हमें stack build
साथ प्रोजेक्ट stack build
और फिर हम इसे रन कर सकते हैं
stack exec helloworld-exe
स्टैक स्थापित करें
कमांड चलाकर
stack install
स्टैक फ़ोल्डर में एक निष्पादन योग्य फ़ाइल की प्रतिलिपि बनाएगा
/Users/<yourusername>/.local/bin/
ढेर के साथ प्रोफाइलिंग
stack
माध्यम से किसी प्रोजेक्ट के लिए प्रोफाइलिंग कॉन्फ़िगर करें। सबसे पहले --profile
फ्लैग के साथ प्रोजेक्ट --profile
:
stack build --profile
इसके लिए (जैसे -prof
) काम करने के लिए केबल फाइल में जीएचसी झंडे की आवश्यकता नहीं होती है। stack
स्वचालित रूप से प्रोजेक्ट में लाइब्रेरी और निष्पादन योग्य दोनों के लिए प्रोफाइलिंग चालू कर देगा। अगली बार एक निष्पादन योग्य परियोजना में, सामान्य +RTS
झंडे का उपयोग किया जा सकता है:
stack exec -- my-bin +RTS -p
निर्भरता देखना
यह जानने के लिए कि आपकी परियोजना सीधे किस पैकेज पर निर्भर करती है, आप बस इस कमांड का उपयोग कर सकते हैं:
stack list-dependencies
इस तरह आप पता लगा सकते हैं कि आपकी निर्भरता का कौन सा संस्करण है जहां वास्तव में स्टैक द्वारा नीचे खींचा गया है।
हास्केल परियोजनाएं अक्सर अप्रत्यक्ष रूप से बहुत सारे पुस्तकालयों में खुद को खींचती हैं, और कभी-कभी ये बाहरी निर्भरता समस्याओं का कारण बनती हैं जिन्हें आपको नीचे ट्रैक करने की आवश्यकता होती है। यदि आप अपने आप को एक दुष्ट बाहरी निर्भरता के साथ पाते हैं जिसे आप पहचानना चाहते हैं, तो आप पूरी निर्भरता ग्राफ के माध्यम से पकड़ सकते हैं और पहचान सकते हैं कि आपकी कौन सी निर्भरता अंततः अवांछित पैकेज में खींच रही है:
stack dot --external | grep template-haskell
stack dot
पाठ रूप में एक निर्भरता ग्राफ को प्रिंट करता है जिसे खोजा जा सकता है। इसे भी देखा जा सकता है:
stack dot --external | dot -Tpng -o my-project.png
यदि आप चाहें तो निर्भरता ग्राफ की गहराई भी निर्धारित कर सकते हैं:
stack dot --external --depth 3 | dot -Tpng -o my-project.png