Changes between Version 31 and Version 32 of ExplicitCallStack


Ignore:
Timestamp:
Jan 30, 2007 12:12:37 PM (7 years ago)
Author:
guest
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ExplicitCallStack

    v31 v32  
    7171 
    7272 * '''Higher-order calls'''. Where does a partially applied function receive its stack trace from? Possible options include: 
    73    1. The lexical call site (corresponding to where the function is mentioned in the source code. 
     73   1. The lexical call site (corresponding to where the function is mentioned in the source code). 
    7474   2. The context in which the function receives a particular argument, for instance the one where it is saturated.   
    7575 
     
    163163An advantage of this transformation style is that it handles combinations of transformed and untransformed functions easily. When variable expressions are transformed we simply check to see if the variable corresponds to a transformed function. If it does, we pass it the current stack value as an argument, otherwise we don't. 
    164164 
    165 A problem with this transformation style is that it is sensitive to program transformations that might happen in the compiler. For example, it transforms these two functions differently, even though they are semantically equivalent: 
     165A problem with this transformation style is that it is sensitive to the position of lambdas in the body of a declaration. For example, it transforms these two functions differently, even though they are semantically equivalent: 
    166166 
    167167{{{ 
     
    181181Notice that in the first case the stack passed to `head` and `foo` is simply `["f1"]`, but in the second case it is `"f2":t". 
    182182 
    183 The 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. 
     183One ''might'' expect the same stack trace to be generated for each declaration.