Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Diff of /sml/branches/primop-branch/src/compiler/Elaborator/elaborate/elabcore.sml
ViewVC logotype

Diff of /sml/branches/primop-branch/src/compiler/Elaborator/elaborate/elabcore.sml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1475, Fri Apr 9 19:05:33 2004 UTC revision 1476, Fri Apr 16 20:51:46 2004 UTC
# Line 89  Line 89 
89  val internalSym = SpecialSymbols.internalVarId  val internalSym = SpecialSymbols.internalVarId
90    
91  val dummyFNexp =  val dummyFNexp =
92      FNexp([RULE(WILDpat,RAISEexp(CONexp(V.bogusEXN,[]),UNDEFty))],UNDEFty)      FNexp([RULE(WILDpat,RAISEexp(CONexp(V.bogusEXN,UNDEFty),UNDEFty))],UNDEFty)
93    
94  (* LAZY *)  (* LAZY *)
95  (* clauseKind: used for communicating information about lazy fun decls  (* clauseKind: used for communicating information about lazy fun decls
# Line 173  Line 173 
173          end          end
174    
175      fun delayExp e =      fun delayExp e =
176          APPexp(CONexp(BT.dollarDcon,[]), e)          APPexp(CONexp(BT.dollarDcon,UNDEFty), e)
177    
178      (* lrvbMakeY n: build declaration of n-ary Y combinator for lazy val rec *)      (* lrvbMakeY n: build declaration of n-ary Y combinator for lazy val rec *)
179      fun lrvbMakeY n =      fun lrvbMakeY n =
# Line 199  Line 199 
199              val dvar  = newVALvar(S.varSymbol "d$")              val dvar  = newVALvar(S.varSymbol "d$")
200    
201              (* "ref($(raise Match))" *)              (* "ref($(raise Match))" *)
202              fun rdrExp _ = APPexp(CONexp(BT.refDcon,[]),              fun rdrExp _ = APPexp(CONexp(BT.refDcon,UNDEFty),
203                                    delayExp(RAISEexp(CONexp(exn,[]),UNDEFty)))                                    delayExp(RAISEexp(CONexp(exn,UNDEFty),UNDEFty)))
204              val rpat  = TUPLEpat (map VARpat rvars)              val rpat  = TUPLEpat (map VARpat rvars)
205              val rexp  = TUPLEexp (repeat rdrExp)              val rexp  = TUPLEexp (repeat rdrExp)
206              val rdec  = VALdec([VB{pat=rpat, exp=rexp, boundtvs=[], tyvars=ref[]}])              val rdec  = VALdec([VB{pat=rpat, exp=rexp, boundtvs=[], tyvars=ref[]}])
# Line 463  Line 463 
463                    of V.VAL v => VARexp(ref v,UNDEFty)                    of V.VAL v => VARexp(ref v,UNDEFty)
464                     | V.CON(d as DATACON{lazyp,const,...}) =>                     | V.CON(d as DATACON{lazyp,const,...}) =>
465                        if lazyp then  (* LAZY *)                        if lazyp then  (* LAZY *)
466                          if const then delayExp(CONexp(d,[]))                          if const then delayExp(CONexp(d,UNDEFty))
467                          else let val var = newVALvar(S.varSymbol "x")                          else let val var = newVALvar(S.varSymbol "x")
468                                in FNexp(completeMatch                                in FNexp(completeMatch
469                                          [RULE(VARpat(var),                                          [RULE(VARpat(var),
470                                                delayExp(                                                delayExp(
471                                                  APPexp(CONexp(d,[]),                                                  APPexp(CONexp(d,UNDEFty),
472                                                         VARexp(ref(var),UNDEFty))))],                                                         VARexp(ref(var),UNDEFty))))],
473                                         UNDEFty (* DBM: ? *))                                         UNDEFty (* DBM: ? *))
474                               end                               end
475                        else CONexp(d, [])),                        else CONexp(d,UNDEFty)),
476                  TS.empty, no_updt)                  TS.empty, no_updt)
477             | IntExp s =>             | IntExp s =>
478                 (INTexp(s,TU.mkLITERALty(T.INT,region)),TS.empty,no_updt)                 (INTexp(s,TU.mkLITERALty(T.INT,region)),TS.empty,no_updt)

Legend:
Removed from v.1475  
changed lines
  Added in v.1476

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0