The Stratego editor incorrectly analyzes multiple lets. Example:

let p = *q* <+ p
    q = *r* <+ q
    r = !1 <+ r
 in p
end

The editor complains that the strategies marked with * are not defined. This is inconsistent with the Stratego compiler. According to the Stratego compiler the following two lets are not equivalent, whereas the editor treats them as equivalent:

Example 1:

let p = q <+ p
    q = r <+ q
    r = !1 <+ r
 in p
end

Example 2:

let p = q <+ p
 in 
   let q = r <+ q
    in
      let r = !1 <+ r
       in
         p
      end
    end
end

The Stratego editor rejects both 1 and 2. The Stratego compiler accepts 1 and rejects 2.

Submitted by Vlad Vergu on 17 July 2014 at 09:20

Log in to post comments