package water.rapids.ast.prims.repeaters;
import water.fvec.*;
import water.rapids.Env;
import water.rapids.Val;
import water.rapids.vals.ValFrame;
import water.rapids.ast.AstPrimitive;
import water.rapids.ast.AstRoot;
/**
* Simple sequence of length n
*/
public class AstSeqLen extends AstPrimitive {
@Override
public String[] args() {
return new String[]{"length"};
}
/* (seq_len n) */
@Override
public int nargs() {
return 1 + 1;
}
@Override
public String str() {
return "seq_len";
}
@Override
public ValFrame apply(Env env, Env.StackHelp stk, AstRoot asts[]) {
int len = (int) Math.ceil(asts[1].exec(env).getNum());
if (len <= 0)
throw new IllegalArgumentException("Error in seq_len(" + len + "): argument must be coercible to positive integer");
return new ValFrame(new Frame(Vec.makeSeq(len, true)));
}
}