an array language. now I'm working on the tokens->three address code->bytecode translation. I'm hoping to get that done this week, then start implementing the more important builtins&library functions. you'd be surprised how many functions you can bootstrap just by implementing grade/argsort.

for example:

  // C++ (naive version, sorry)  
  vector<int> bin(vector<int>& x, vector<int>& y) {  
    vector<int> r;  
    for (int a:x) r.push_back(lower_bound(y.begin(),y.end(),a) - y.begin())  
    return r;  
  }



  # Jet  
  ord<<{x asc asc} # double grade idiom  
  bin<<{y,x ord drop len[y]-ord[x]-1}  

or course this is not at all apples to apples, though it works to show the difference in possible approaches. in C++ I'm just turning an already implemented binsearch into something useable for arrays, and in jet I'm doing some weird array tricks to implement it from scratch using grade up (asc).

moreover, the C++ solution is O(m*log(n)) and jet is O(m+n) (though with a large constant factor) - but of course we can do much better once I implement it as a real builtin