Changes between Version 30 and Version 31 of ExplicitCallStack


Ignore:
Timestamp:
Jan 29, 2007 5:29:10 PM (9 years ago)
Author:
guest
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ExplicitCallStack

    v30 v31  
    174174
    175175{{{
    176    f1 = let x = EXP in (\y -> head ["f1"] (foo ["f1" x))
     176   f1 = let x = EXP in (\y -> head ["f1"] (foo ["f1"] x))
    177177
    178178   f2 = \t y -> head ("f2":t) (foo ("f2":t) (let x = EXP in x))
    179179}}}
     180
     181Notice that in the first case the stack passed to `head` and `foo` is simply `["f1"]`, but in the second case it is `"f2":t".
     182
     183The reason for the difference is that lambda abstractions are transformed differently, depending on whether they are bound directly to a variable, or whether they are just some nested sub-expression.