NRecordValue x = (NRecordValue) executor.internalEvaluate(arguments[1]);
List<String> fieldNames = recordDictionary.fieldNames();
int nFields = fieldNames.size();
RecordValue resultMap = RecordValueImpl.make();
for (int i = 0; i < nFields; ++i) {
String fieldName = fieldNames.get(i);
Node valueDictionaryThunk = recordDictionary.getValue(fieldName);
Node xValueThunk = x.getValue(fieldName);
//compute "Prelude.output valueDictionaryThunk xValueThunk"
//this is just (after inlining Prelude.output d = d"
//valueDictionaryThunk xValueThunk
Object fieldVal = executor.internalEvaluate(valueDictionaryThunk.apply (xValueThunk)).getValue();
resultMap.put(FieldName.make(fieldName), fieldVal);
}
return new NValObject(resultMap);
}