मैं Outputable
के माध्यम से एक String
के रूप में एक हास्केल स्रोत के एसटीजी प्रतिनिधित्व निकालने के लिए कोशिश कर रहा हूँ, लेकिन coreToStgArgs
तरह निम्नलिखित डंप साथ panicing है यह लग रहा है:निकाला जा रहा है एसटीजी स्रोत
[email protected] ~/Desktop/hue $ runhaskell test.hs
[foo :: forall a. Num a => a -> a
[GblId, Arity=2, Caf=NoCafRefs, Str=DmdType] =
\r srt:SRT:[] [$dNum a1] + $dNum a1 a1;,
bar :: Int -> Int
[GblId,test.hs: test.hs: panic! (the 'impossible' happened)
(GHC version 7.10.3 for x86_64-unknown-linux):
coreToStgArgs I# 3
Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug
यहाँ फ़ाइल FooBar.hs
है
module FooBar where
foo a = a + a
bar :: Int -> Int
bar b = b + 3
यहाँ test.hs
का स्रोत है कि मैं प्रयोग किया जाता है: मैं निकालना चाहते हैं कि
यह कोई है कई वर्षों की तरह लग रहा से पहले मुझे एक ऐसी ही समस्या में पड़ गया है:
https://ghc.haskell.org/trac/ghc/ticket/7159
हालांकि, मुझे पता नहीं क्या हो गया है के बाद से की है। मुझे यह भी यकीन नहीं है कि मनमाने ढंग से हास्केल स्रोत के एसटीजी निकालने के बारे में यह सही तरीका है, इसलिए यदि काम करने वाले बेहतर विकल्प हैं, तो मैं उनके बारे में सुनना चाहता हूं।
संपादित करें:
module FooBar where
foo a = a + a
bar :: Int -> Int
bar b = 3
वास्तव में, पहली नज़र में, बातें करता है, तो प्रेरित कोर हास्केल के लिए मजबूर नहीं करता है काम करने के लिए दिखाई देते हैं: एसटीजी अनुवाद निम्नलिखित कार्यक्रम है जहाँ bar b = b + 3
bar b = 3
परिवर्तित करने के लिए के लिए सफल प्रतीत होता है आदिम संचालन किया जाना है। उदाहरण के लिए bar b = 3 + 9
विफल रहता है।
बग आप से जुड़ा हुआ कहते हैं, "* यह एक बग सब के बाद नहीं है। मैं' CorePrep.corePrepPgm' 'CoreToStg.coreToStg'। * उपयोग करने के लिए प्रयास करने से पहले का उपयोग करने के लिए आवश्यक"। – melpomene
आह, यह कुछ संघर्ष के बाद काम करता है :) धन्यवाद! –
आपको कार्य कोड को उत्तर के रूप में पोस्ट करना चाहिए। – melpomene