private static object Filter(Context context, IList<object> arguments)
{
IFunction function = (IFunction)arguments[0];
List list = (List)arguments[1];
IList<object> elements = new List<object>();
while (list != null)
{
var result = function.Apply(context, new object[] { list.Head });
if (true.Equals(result))
elements.Add(list.Head);
list = (List)list.Tail;
}
return List.MakeList(elements);
}