CurryProg "Random" ["Prelude","Time","System"] [] [CFunc ("Random","addend") 0 Private (CTCons ("Prelude","Int") []) (CRules CFlex [CRule [] [(CSymbol ("Prelude","success"),CLit (CIntc 11))] []]), CFunc ("Random","getRandomSeed") 0 Public (CTCons ("Prelude","IO") [CTCons ("Prelude","Int") []]) (CRules CFlex [CRule [] [(CSymbol ("Prelude","success"),CApply (CApply (CSymbol ("Prelude",">>=")) (CSymbol ("Time","getClockTime"))) (CLambda [CPVar (0,"time")] (CApply (CApply (CSymbol ("Prelude",">>=")) (CSymbol ("System","getCPUTime"))) (CLambda [CPVar (1,"msecs")] (CLetDecl [CLocalPat (CPComb ("Time","CalendarTime") [CPVar (2,"y"),CPVar (3,"mo"),CPVar (4,"d"),CPVar (5,"h"),CPVar (6,"m"),CPVar (7,"s"),CPVar (8,"_")]) (CApply (CSymbol ("Time","toUTCTime")) (CVar (0,"time"))) []] (CApply (CSymbol ("Prelude","return")) (CApply (CApply (CSymbol ("Prelude","mod")) (CApply (CApply (CSymbol ("Prelude","+")) (CApply (CApply (CSymbol ("Prelude","+")) (CApply (CApply (CSymbol ("Prelude","+")) (CApply (CApply (CSymbol ("Prelude","+")) (CVar (2,"y"))) (CVar (3,"mo")))) (CVar (4,"d")))) (CVar (5,"h")))) (CApply (CApply (CSymbol ("Prelude","*")) (CApply (CApply (CSymbol ("Prelude","*")) (CVar (6,"m"))) (CVar (7,"s")))) (CVar (1,"msecs"))))) (CSymbol ("Random","mask")))))))))] []]), CFunc ("Random","intlimit") 0 Private (CTCons ("Prelude","Int") []) (CRules CFlex [CRule [] [(CSymbol ("Prelude","success"),CLit (CIntc 2147483648))] []]), CFunc ("Random","intsize") 0 Private (CTCons ("Prelude","Int") []) (CRules CFlex [CRule [] [(CSymbol ("Prelude","success"),CLit (CIntc 32))] []]), CFunc ("Random","intspan") 0 Private (CTCons ("Prelude","Int") []) (CRules CFlex [CRule [] [(CSymbol ("Prelude","success"),CLit (CIntc 4294967296))] []]), CFunc ("Random","mask") 0 Private (CTCons ("Prelude","Int") []) (CRules CFlex [CRule [] [(CSymbol ("Prelude","success"),CLit (CIntc 281474976710656))] []]), CFunc ("Random","multiplier") 0 Private (CTCons ("Prelude","Int") []) (CRules CFlex [CRule [] [(CSymbol ("Prelude","success"),CLit (CIntc 25214903917))] []]), CFunc ("Random","nextBoolean") 1 Public (CFuncType (CTCons ("Prelude","Int") []) (CTCons ("Prelude","[]") [CTCons ("Prelude","Bool") []])) (CRules CFlex [CRule [CPVar (0,"seed")] [(CSymbol ("Prelude","success"),CApply (CApply (CSymbol ("Prelude","map")) (CLambda [CPVar (1,"x0")] (CApply (CApply (CSymbol ("Prelude","/=")) (CVar (1,"x0"))) (CLit (CIntc 0))))) (CApply (CApply (CSymbol ("Random","nextIntBits")) (CVar (0,"seed"))) (CLit (CIntc 1))))] []]), CFunc ("Random","nextInt") 1 Public (CFuncType (CTCons ("Prelude","Int") []) (CTCons ("Prelude","[]") [CTCons ("Prelude","Int") []])) (CRules CFlex [CRule [CPVar (0,"seed")] [(CSymbol ("Prelude","success"),CApply (CApply (CSymbol ("Random","nextIntBits")) (CVar (0,"seed"))) (CSymbol ("Random","intsize")))] []]), CFunc ("Random","nextIntBits") 2 Private (CFuncType (CTCons ("Prelude","Int") []) (CFuncType (CTCons ("Prelude","Int") []) (CTCons ("Prelude","[]") [CTCons ("Prelude","Int") []]))) (CRules CFlex [CRule [CPVar (0,"seed"),CPVar (1,"bits")] [(CSymbol ("Prelude","success"),CApply (CApply (CSymbol ("Prelude","map")) (CSymbol ("Random","adjust"))) (CVar (3,"list")))] [CLocalPat (CPVar (2,"init")) (CApply (CApply (CSymbol ("Prelude","mod")) (CApply (CApply (CSymbol ("Random","xor")) (CVar (0,"seed"))) (CSymbol ("Random","multiplier")))) (CSymbol ("Random","mask"))) [],CLocalPat (CPVar (3,"list")) (CApply (CSymbol ("Random","sequence")) (CVar (2,"init"))) [],CLocalPat (CPVar (4,"shift")) (CApply (CApply (CSymbol ("Random","power")) (CLit (CIntc 2))) (CApply (CApply (CSymbol ("Prelude","-")) (CSymbol ("Random","powermask"))) (CVar (1,"bits")))) [],CLocalFunc (CFunc ("Random","adjust") 1 Private (CFuncType (CTCons ("Prelude","Int") []) (CTCons ("Prelude","Int") [])) (CRules CFlex [CRule [CPVar (5,"x")] [(CSymbol ("Prelude","success"),CApply (CApply (CApply (CSymbol ("Prelude","if_then_else")) (CApply (CApply (CSymbol ("Prelude",">")) (CVar (6,"arg"))) (CSymbol ("Random","intlimit")))) (CApply (CApply (CSymbol ("Prelude","-")) (CVar (6,"arg"))) (CSymbol ("Random","intspan")))) (CVar (6,"arg")))] [CLocalPat (CPVar (6,"arg")) (CApply (CApply (CSymbol ("Prelude","mod")) (CApply (CApply (CSymbol ("Prelude","div")) (CVar (5,"x"))) (CVar (4,"shift")))) (CSymbol ("Random","intspan"))) []]]))]]), CFunc ("Random","nextIntRange") 2 Public (CFuncType (CTCons ("Prelude","Int") []) (CFuncType (CTCons ("Prelude","Int") []) (CTCons ("Prelude","[]") [CTCons ("Prelude","Int") []]))) (CRules CFlex [CRule [CPVar (0,"seed"),CPVar (1,"n")] [(CApply (CApply (CSymbol ("Prelude",">")) (CVar (1,"n"))) (CLit (CIntc 0)),CApply (CApply (CApply (CSymbol ("Prelude","if_then_else")) (CApply (CSymbol ("Random","power_of_2")) (CVar (1,"n")))) (CApply (CApply (CSymbol ("Prelude","map")) (CSymbol ("Random","adjust_a"))) (CVar (2,"seq")))) (CApply (CApply (CSymbol ("Prelude","map")) (CSymbol ("Random","adjust_b"))) (CApply (CApply (CSymbol ("Prelude","filter")) (CSymbol ("Random","adjust_c"))) (CVar (2,"seq")))))] [CLocalPat (CPVar (2,"seq")) (CApply (CApply (CSymbol ("Random","nextIntBits")) (CVar (0,"seed"))) (CApply (CApply (CSymbol ("Prelude","-")) (CSymbol ("Random","intsize"))) (CLit (CIntc 1)))) [],CLocalFunc (CFunc ("Random","adjust_a") 1 Private (CFuncType (CTCons ("Prelude","Int") []) (CTCons ("Prelude","Int") [])) (CRules CFlex [CRule [CPVar (3,"x")] [(CSymbol ("Prelude","success"),CApply (CApply (CSymbol ("Prelude","div")) (CApply (CApply (CSymbol ("Prelude","*")) (CVar (1,"n"))) (CVar (3,"x")))) (CSymbol ("Random","intlimit")))] []])),CLocalFunc (CFunc ("Random","adjust_b") 1 Private (CFuncType (CTCons ("Prelude","Int") []) (CTCons ("Prelude","Int") [])) (CRules CFlex [CRule [CPVar (3,"x")] [(CSymbol ("Prelude","success"),CApply (CApply (CSymbol ("Prelude","mod")) (CVar (3,"x"))) (CVar (1,"n")))] []])),CLocalFunc (CFunc ("Random","adjust_c") 1 Private (CFuncType (CTCons ("Prelude","Int") []) (CTCons ("Prelude","Bool") [])) (CRules CFlex [CRule [CPVar (3,"x")] [(CSymbol ("Prelude","success"),CApply (CApply (CSymbol ("Prelude",">=")) (CApply (CApply (CSymbol ("Prelude","+")) (CApply (CApply (CSymbol ("Prelude","-")) (CVar (3,"x"))) (CApply (CApply (CSymbol ("Prelude","mod")) (CVar (3,"x"))) (CVar (1,"n"))))) (CApply (CApply (CSymbol ("Prelude","-")) (CVar (1,"n"))) (CLit (CIntc 1))))) (CLit (CIntc 0)))] []])),CLocalFunc (CFunc ("Random","power_of_2") 1 Private (CFuncType (CTCons ("Prelude","Int") []) (CTCons ("Prelude","Bool") [])) (CRules CFlex [CRule [CPVar (3,"k")] [(CSymbol ("Prelude","success"),CApply (CApply (CSymbol ("Prelude","||")) (CApply (CApply (CSymbol ("Prelude","==")) (CVar (3,"k"))) (CLit (CIntc 2)))) (CApply (CApply (CSymbol ("Prelude","&&")) (CApply (CApply (CSymbol ("Prelude",">")) (CVar (3,"k"))) (CLit (CIntc 2)))) (CApply (CApply (CSymbol ("Prelude","&&")) (CApply (CApply (CSymbol ("Prelude","==")) (CApply (CApply (CSymbol ("Prelude","mod")) (CVar (3,"k"))) (CLit (CIntc 2)))) (CLit (CIntc 0)))) (CApply (CSymbol ("Random","power_of_2")) (CApply (CApply (CSymbol ("Prelude","div")) (CVar (3,"k"))) (CLit (CIntc 2)))))))] []]))]]), CFunc ("Random","nextseed") 1 Private (CFuncType (CTCons ("Prelude","Int") []) (CTCons ("Prelude","Int") [])) (CRules CFlex [CRule [CPVar (0,"seed")] [(CSymbol ("Prelude","success"),CApply (CApply (CSymbol ("Prelude","mod")) (CApply (CApply (CSymbol ("Prelude","+")) (CApply (CApply (CSymbol ("Prelude","*")) (CVar (0,"seed"))) (CSymbol ("Random","multiplier")))) (CSymbol ("Random","addend")))) (CSymbol ("Random","mask")))] []]), CFunc ("Random","power") 2 Private (CFuncType (CTCons ("Prelude","Int") []) (CFuncType (CTCons ("Prelude","Int") []) (CTCons ("Prelude","Int") []))) (CRules CFlex [CRule [CPVar (0,"base"),CPVar (1,"exp")] [(CSymbol ("Prelude","success"),CApply (CApply (CApply (CSymbol ("Random","binary")) (CLit (CIntc 1))) (CVar (0,"base"))) (CVar (1,"exp")))] [CLocalFunc (CFunc ("Random","binary") 3 Private (CFuncType (CTCons ("Prelude","Int") []) (CFuncType (CTCons ("Prelude","Int") []) (CFuncType (CTCons ("Prelude","Int") []) (CTCons ("Prelude","Int") [])))) (CRules CFlex [CRule [CPVar (2,"x"),CPVar (3,"b"),CPVar (4,"e")] [(CSymbol ("Prelude","success"),CApply (CApply (CApply (CSymbol ("Prelude","if_then_else")) (CApply (CApply (CSymbol ("Prelude","==")) (CVar (4,"e"))) (CLit (CIntc 0)))) (CVar (2,"x"))) (CApply (CApply (CApply (CSymbol ("Random","binary")) (CApply (CApply (CSymbol ("Prelude","*")) (CVar (2,"x"))) (CApply (CApply (CApply (CSymbol ("Prelude","if_then_else")) (CApply (CApply (CSymbol ("Prelude","==")) (CApply (CApply (CSymbol ("Prelude","mod")) (CVar (4,"e"))) (CLit (CIntc 2)))) (CLit (CIntc 1)))) (CVar (3,"b"))) (CLit (CIntc 1))))) (CApply (CApply (CSymbol ("Prelude","*")) (CVar (3,"b"))) (CVar (3,"b")))) (CApply (CApply (CSymbol ("Prelude","div")) (CVar (4,"e"))) (CLit (CIntc 2)))))] []]))]]), CFunc ("Random","powermask") 0 Private (CTCons ("Prelude","Int") []) (CRules CFlex [CRule [] [(CSymbol ("Prelude","success"),CLit (CIntc 48))] []]), CFunc ("Random","sequence") 1 Private (CFuncType (CTCons ("Prelude","Int") []) (CTCons ("Prelude","[]") [CTCons ("Prelude","Int") []])) (CRules CFlex [CRule [CPVar (0,"seed")] [(CSymbol ("Prelude","success"),CApply (CApply (CSymbol ("Prelude",":")) (CVar (1,"next"))) (CApply (CSymbol ("Random","sequence")) (CVar (1,"next"))))] [CLocalPat (CPVar (1,"next")) (CApply (CSymbol ("Random","nextseed")) (CVar (0,"seed"))) []]]), CFunc ("Random","xor") 2 Private (CFuncType (CTCons ("Prelude","Int") []) (CFuncType (CTCons ("Prelude","Int") []) (CTCons ("Prelude","Int") []))) (CRules CFlex [CRule [CPVar (0,"x"),CPVar (1,"y")] [(CSymbol ("Prelude","success"),CApply (CApply (CApply (CSymbol ("Prelude","if_then_else")) (CApply (CApply (CSymbol ("Prelude","&&")) (CApply (CApply (CSymbol ("Prelude","==")) (CVar (0,"x"))) (CLit (CIntc 0)))) (CApply (CApply (CSymbol ("Prelude","==")) (CVar (1,"y"))) (CLit (CIntc 0))))) (CLit (CIntc 0))) (CApply (CApply (CSymbol ("Prelude","+")) (CVar (2,"lastBit"))) (CApply (CApply (CSymbol ("Prelude","*")) (CLit (CIntc 2))) (CVar (3,"restBits")))))] [CLocalPat (CPVar (2,"lastBit")) (CApply (CApply (CApply (CSymbol ("Prelude","if_then_else")) (CApply (CApply (CSymbol ("Prelude","==")) (CApply (CApply (CSymbol ("Prelude","mod")) (CVar (0,"x"))) (CLit (CIntc 2)))) (CApply (CApply (CSymbol ("Prelude","mod")) (CVar (1,"y"))) (CLit (CIntc 2))))) (CLit (CIntc 0))) (CLit (CIntc 1))) [],CLocalPat (CPVar (3,"restBits")) (CApply (CApply (CSymbol ("Random","xor")) (CApply (CApply (CSymbol ("Prelude","div")) (CVar (0,"x"))) (CLit (CIntc 2)))) (CApply (CApply (CSymbol ("Prelude","div")) (CVar (1,"y"))) (CLit (CIntc 2)))) []]])] []