2012-05-21 15 views
10

मैं निम्नलिखित कार्यक्रम है यह स्टील आवश्यकमानव-पठनीय रूप में जीएचसी सरलीफायर आउटपुट को कैसे डंप करें?

add = 
    \ ds b -> 
    case ds of 
     Zero -> 
     b 
     Succ a -> 
     add 
      a 
      (Succ b) 

mul = 
    \ ds b -> 
    case ds of 
     Zero -> 
     Zero 
     Succ a -> 
     add 
      b 
      (mul a b) 

four = 
    let 
     two = 
     Succ 
      (Succ Zero) 
    in 
    mul two two 

सबसे अच्छा मैं पाने में कामयाब रहे

ghci -ddump-simpl -dsuppress-module-prefixes -dsuppress-uniques foo.hs 

है, लेकिन:

data Peano = Zero | Succ Peano deriving (Show) 

add Zero  b = b 
add (Succ a) b = add a (Succ b) 

mul Zero  b = Zero 
mul (Succ a) b = add b (mul a b) 

four x = let two = Succ (Succ Zero) in mul two two 

मैं GHC से कुछ इस तरह प्राप्त करना चाहते हैं उपरोक्त कोड प्राप्त करने के लिए जीएचसी उत्पन्न सामग्री के मैन्युअल हटाने के बहुत सारे। क्या जीएचसी या तीसरी पार्टी स्क्रिप्ट के लिए कोई स्विच है जो क्लीनअप करता है?

क्या case {tick (main:Main, 8)} @ (State# RealWorld) of _ { __DEFAULT -> से छुटकारा पाने के लिए कम से कम कोई तरीका है?

+0

'tick' एनोटेशन, एचपीसी द्वारा उत्पन्न कर रहे हैं ताकि उसे अक्षम करना उनमें से छुटकारा पाने चाहिए, मुझे लगता है। –

+0

मुझे नहीं पता कि कैसे। मैंने इसे चालू नहीं किया - कमांड लाइन देखें। – nponeccop

उत्तर

17

आप भाग्यशाली हैं! नौकरी के लिए एक उपकरण है: ghc-core

ghc-core एक कमांड लाइन रैपर के साथ ghc को लपेटता है जो एक पीज़र में मानव पठनीय, रंगीन तरीके से जीएचसी के अनुकूलित कोर और असेंबली आउटपुट को प्रदर्शित करता है।

उपयोग - बस ghc-core साथ ghc बदल देते हैं:

  ghc-core A.hs 

    ghc-core -fvia-C -optc-O3 A.hs 
+0

(यह कहा गया है कि, आप इसे इससे अधिक पठनीय नहीं पाएंगे। साथ ही, 'कैबल इंस्टॉल ghc-core'' के साथ 'ghc-core' इंस्टॉल करें।) –

+0

[स्क्रीनशॉट] (http://galois.com/ ~ डॉन/छवियों/ghc-core.png) लिंक टूटा हुआ है। – pat

+0

दुर्भाग्य से, मैं इसके बारे में ज्यादा कुछ नहीं कर सकता। –