public Result<IValue> interpret(IEvaluator<Result<IValue>> __eval) {
__eval.setCurrentAST(this);
__eval.notifyAboutSuspension(this);
Environment env = __eval.getCurrentEnvt();
Parameters parameters = getParameters();
Type formals = parameters.typeOf(env, true, __eval);
Type returnType = typeOf(env, true, __eval);
RascalTypeFactory RTF = RascalTypeFactory.getInstance();
Type kwParams = TF.voidType();
java.util.List<KeywordFormal> kwd = parameters.getKeywordFormals().hasKeywordFormalList() ? parameters.getKeywordFormals().getKeywordFormalList() : Collections.<KeywordFormal>emptyList();
if (parameters.hasKeywordFormals() && parameters.getKeywordFormals().hasKeywordFormalList()) {
kwParams = TypeDeclarationEvaluator.computeKeywordParametersType(kwd, __eval);
}
return new RascalFunction(this, __eval, null,
(FunctionType) RTF.functionType(returnType, formals, kwParams),