Changes between Version 63 and Version 64 of ExplicitCallStack
 Timestamp:
 Feb 9, 2007 12:28:45 PM (10 years ago)
Legend:
 Unmodified
 Added
 Removed
 Modified

ExplicitCallStack
v63 v64 267 267 === Notation === 268 268 269 Double square brackets denote the transformation function, which has either one or two arguments, depending on what type of entity it is applied to. In most cases it has one argument, which is just a syntactic construct, but for expressions it 270 has an additional argument which represents the current stack value. 271 269 Double square brackets denote the transformation function, which has two arguments. The first argument is denoted inside the brackets and it is the syntactic object that we are transforming. The second argument is a stack value. 272 270 For instance: 273 271 … … 276 274 }}} 277 275 278 means transform expression E with k as the current stack value. 276 means transform expression E with k as the current stack value. When we wish to ignore the current stack value (because it is not meaningful in a certain context, such as the toplevel declarations) we write: 277 {{{ 278 [[ E ]]_? 279 }}} 279 280 280 281 === Transformation option 1 === … … 286 287 Declarations (top level): 287 288 288 [[ x :: T ]] 289 [[ x :: T ]]_? ==> x :: Trace > T , x is function bound, and transformed for tracing 289 290 290 [[ x :: T ]] 291 292 [[ x = \y1 .. yn > E ]] 293 294 [[ x = \y1 .. yn > E ]] 295 296 [[ x = E ]] 297 298 [[ data f a1 .. an = K1 .. Km ]] 291 [[ x :: T ]]_? ==> x :: T , x does not match the above rule 292 293 [[ x = \y1 .. yn > E ]]_? ==> x = \t y1 .. yn > [[ E ]]_("x":t) , x is transformed for tracing 294 295 [[ x = \y1 .. yn > E ]]_? ==> x = \y1 .. yn > [[ E ]]_["x"] , x is not transformed for tracing 296 297 [[ x = E ]]_? ==> x = [[ E ]]_["x"] 298 299 [[ data f a1 .. an = K1 .. Km ]]_? ==> data f a1 .. an = K1 .. Km 299 300 300 301 Declarations (local):