Skip to content

Latest commit

 

History

History
25 lines (16 loc) · 911 Bytes

README.md

File metadata and controls

25 lines (16 loc) · 911 Bytes

Stx Lense

Functional lenses require macros or type constructors so if you drop down to a more homogenous object tree description you can implement them there.

This library is based on the paper A Language for Bi-Directional Tree Transformations and currently implements the following lenses over pml:

  LsId;//Id
  LsConstant(value:Null<V>,_default:Null<V>);//Constant
  LsSequence(l:LExpr<K,V>,r:LExpr<K,V>);//Sequence

  LsHoist(name:K);//Hoist
  LsPlunge(name:K);//Plunge
  
  LsXFork(pc:Cluster<K>,pa:Cluster<K>,lhs:LExpr<K,V>,rhs:LExpr<K,V>);//XFork
  LsMap(lense:LExpr<K,V>);//Map
  LsCopy(m:K,n:K);//Copy
  LsMerge(m:K,n:K);//Merge

  LsCCond(ccond:V,_true:LExpr<K,V>,_false:LExpr<K,V>);//Concrete Condition
  LsACond(ccond:V,acond:V,l:LExpr<K,V>,r:LExpr<K,V>);//Abstract Condition