public ElaFun <T1, T2, T3, T4, R> ToDelegate <T1, T2, T3, T4, R>() { return((t1, t2, t3, t4) => { var ret = Call(ElaValue.FromObject(t1), ElaValue.FromObject(t2), ElaValue.FromObject(t3), ElaValue.FromObject(t4)); return ret.Convert <R>(); }); }
public ElaFun <T, R> ToDelegate <T, R>() { return(t => { var ret = Call(ElaValue.FromObject(t)); return ret.Convert <R>(); }); }
public ElaFun <T1, T2, T3, T4, T5, T6, T7, T8, R> ToDelegate <T1, T2, T3, T4, T5, T6, T7, T8, R>() { return((t1, t2, t3, t4, t5, t6, t7, t8) => { var ret = Call(ElaValue.FromObject(t1), ElaValue.FromObject(t2), ElaValue.FromObject(t3), ElaValue.FromObject(t4), ElaValue.FromObject(t5), ElaValue.FromObject(t6), ElaValue.FromObject(t7), ElaValue.FromObject(t8)); return ret.Convert <R>(); }); }
public override ElaValue Call(params ElaValue[] args) { var data = new object[args.Length]; for (var i = 0; i < args.Length; i++) { data[i] = args[i].AsObject(); } return(ElaValue.FromObject(func.DynamicInvoke(data))); }
private ElaList BuildList(object[] array) { var vals = new List <ElaValue>(); foreach (var o in array) { if (o is Dictionary <String, Object> ) { vals.Add(new ElaValue(BuildRecord((Dictionary <String, Object>)o))); } else { vals.Add(ElaValue.FromObject(o)); } } return(ElaList.FromEnumerable(vals)); }
private ElaRecord BuildRecord(Dictionary <String, Object> dict) { var fields = new List <ElaRecordField>(); foreach (var kv in dict) { if (kv.Value is object[]) { fields.Add(new ElaRecordField(kv.Key, new ElaValue(BuildList((object[])kv.Value)))); } else if (kv.Value is Dictionary <String, Object> ) { fields.Add(new ElaRecordField(kv.Key, new ElaValue(BuildRecord((Dictionary <String, Object>)kv.Value)))); } else { fields.Add(new ElaRecordField(kv.Key, ElaValue.FromObject(kv.Value))); } } return(new ElaRecord(fields.ToArray())); }
public ElaLazyList(ElaLazy next, object value) : this(next, ElaValue.FromObject(value)) { }
public ElaRecordField(string field, object value) { Field = field; Value = ElaValue.FromObject(value); }
internal void AddArgument(string name, object value) { Add(name, ElaValue.FromObject(value)); }