चूंकि चीजें इतनी तेजी से बदलती हैं, इसलिए मैंने इस सवाल को पोस्ट किया है ताकि उम्मीद है कि हास्केल परियोजना शुरू करने के लिए समुदाय-सहमत तरीके को स्पष्ट किया जा सकता है। कल्पना कीजिए कि मैं दो अलग-अलग परियोजनाओं:हास्केल परियोजनाओं के निर्माण के लिए अद्यतित मानक वर्कफ़्लो क्या है?
परियोजना # 1: वर्ग, पुस्तकालय कि वर्गों संख्या। कोई डीपी नहीं
-- Square.hs module Square where square :: Num a => a -> a square x = x * x
परियोजना # 2: कर्ण, पुस्तकालय और निष्पादन योग्य है कि एक समकोण त्रिभुज की लंबाई की ओर पाता है। # 1 पर निर्भर करता है:,
-- Hypotenuse.hs module Hypotenuse where import Square hypotenuse :: Floating a => a -> a -> a hypotenuse x y = sqrt $ square x + square y
-- Main.hs import System.Environment import Hypotenuse main = do [x,y] <- fmap (map read) getArgs print $ hypotenuse x y
GHC 7.10.2 के साथ एक कंप्यूटर के साथ शुरू, ढेर और कबाल स्थापित है, और एक ही निर्देशिका, ~/OrganizeMe
, ~/OrganizeMe/Square.hs
, ~/OrganizeMe/Hypotenuse.hs
युक्त और ~/OrganizeMe/Main.hs
, जैसा कि ऊपर प्रस्तुत किया गया है - यूनिक्स कमांड का एक पूरा सेट क्या है अनुभवी हैस्केलर उन परियोजनाओं को आर्किटेक्ट करने के लिए उपयोग करेगा? इसमें शामिल हैं:
उन परियोजनाओं के निर्देशिका पेड़ को व्यवस्थित करना;
को विन्यस्त
Stack
/Cabal
/etc
(औरgit
, वैकल्पिक);उन्हें स्थानीय रूप से भवन/स्थापित करना;
Hackage
/Stackage
पर प्रकाशित।
मैंने स्टैक और कुछ कैबल ट्यूटोरियल के लिए पूरे दस्तावेज़ को पढ़ा है। अब मुझे कई विशेषताओं के बारे में पता है, लेकिन मुझे अभी भी पता नहीं है कि निर्देशिका पेड़ कैसे व्यवस्थित किए जाने चाहिए। क्या मुझे परियोजनाओं के लिए स्टैक और एकाधिक उप-निर्देशिकाओं के लिए एक निर्देशिका की आवश्यकता है, प्रत्येक को '। Cabal' फ़ाइल वाला'? या इसके बजाय क्या? मैं एक दूसरे से आयात स्थानीय परियोजनाओं को कैसे जोड़ सकता हूं? आशा है कि एक ठोस उदाहरण उन और अन्य सवालों को स्पष्ट कर सकता है। – MaiaVictor
ढेर/ढेर अच्छा है। वाणिज्यिक समर्थन और सब कुछ है। –
मेरे मोबाइल पर अधिक समय के बिना, लेकिन आपको सही विचार मिल गया है। पुस्तकालय प्रति एक उपनिर्देशिका, प्रत्येक एक कैबल फ़ाइल के साथ, और stack.yaml फ़ाइल से प्रत्येक डीआईआर संदर्भ। वाई रेपो इस –