मैंने कुछ हास्केल प्रोग्रामिंग भाषा का अध्ययन किया है और अब मुझे पता चला है कि सी प्रोग्राम से हास्केल फ़ंक्शंस को कॉल करना संभव है। मेरे हास्केल अध्ययनों के दौरान, मैंने हास्केल के साथ एक शब्द आवृत्ति काउंटर बनाया और मैं उस समारोह को सी प्रोग्राम से कॉल करने का प्रयास करना चाहता हूं, लेकिन मुझे नहीं पता कि यह कैसे करना है। मैं haskell.org पर इन दोनों वेबसाइटों पाया:सही हास्केल सी प्रकार का चयन कैसे करें?
Foreign C types (Haskell module)
उस के बावजूद, मैं थोड़ा जो प्रकार का उपयोग करने खो रहा हूँ। मेरे हैकेल प्रोग्राम निम्नलिखित कार्यों का एक पाइपलाइन है:
putStr। अनलॉक मानचित्र परीक्षण एफ। sortedTree
जहां मेरे अपने कार्यों
- testF है की testF :: शो में एक => प्रकार ([चार], एक) -> [चार]
- sortedTreeक्रमबद्ध ट्री :: (संख्या ए, ऑर्ड ए) => [चार] -> [([चार], ए)]
मुझे पूरा यकीन है कि मुझे प्रत्येक फ़ंक्शन के प्रकारों को सी प्रकारों में परिवर्तित करने की आवश्यकता है, केवल पाइपलाइन को कॉल करने वाले फ़ंक्शन को बदलने के बजाय। "मुख्य" समारोह के प्रकार
fileFreq है :: [चार] -> आईओ()
यह सब इसके अलावा, मैं एक Haskell द्विआधारी पेड़ का उपयोग कर रहा हूँ, कि प्रस्तावना प्रकार नहीं है।
module WordCounter where
import List
import Char
import Foreign.C.Types
data BTree a = Tip | BNode a (BTree a) (BTree a) deriving Show
insertFreq x Tip = BNode (x,1) Tip Tip
insertFreq x (BNode (q,p) l r) | (map toLower x)==(map toLower q) = BNode (q, p+1) l r
| otherwise = BNode (q,p) l (insertFreq x r)
tlist :: BTree a -> [a]
tlist Tip = []
tlist (BNode x l r) = concat [tlist l, [x], tlist r]
sortedTree x = sortBy (\(x,y) (p,q) -> compare q y) (tlist (foldr insertFreq Tip (words x)))
testF (x, n) = concat (x : ":" : " \t\t\t " : show n : [])
concord = putStr . unlines . map testF . sortedTree
fileFreq filename = do { text <- readFile filename; concord text }
किसी को भी इस के साथ मुझे थोड़ी मार्गदर्शन कर सकते हैं:
यहाँ पूरे हास्केल कोड है?
कूल सवाल है, दुर्भाग्य से इस मैट्रिक्स पर कोई भी उपयोगी http://asset.soup.io/asset/0750/2820_15d5_960.jpeg होने के लिए मैं यह आशा है कि लगता है आप उचित जवाब की प्रतीक्षा करते समय अपमानजनक नहीं हैं। पाठ्यक्रम का +1 – stacker
यह मेरे लिए अस्पष्ट नहीं है। क्या आप स्पष्ट हो सकते हैं कि आप किस हास्केल फ़ंक्शन को सी से कॉल करना चाहते हैं? दिखाओ कि आपके पास बाइंडिंग काम कर रही है - एक सरल सी कॉलर कैसा दिखता है? –
@ स्टैकर: अनमोल: डी – Skurmedel