खोज…


ढेर लगाना

मैक ओएस एक्स

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


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow