From 9dade183d0678fca6f3ebb3b610859b9b8c482bb Mon Sep 17 00:00:00 2001 From: Yorhel Date: Tue, 10 Apr 2012 16:28:11 +0200 Subject: tuples.go: Added convenient Array() and Map() wrappers --- tuples.go | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/tuples.go b/tuples.go index 4478c5f..2b091ff 100644 --- a/tuples.go +++ b/tuples.go @@ -226,11 +226,26 @@ func (t Tuple) Match(p Tuple) bool { return true } -// Same as Tuple{El(a), El(b), ..} -func Tup(t ...interface{}) Tuple { - r := make(Tuple, len(t)) +// Same as El(map[string]Element{a: El(b), c: El(d), ...}) +// panics on incorrect arguments +func Map(t ...interface{}) map[string]Element { + r := make(map[string]Element, len(t)/2) + for i := 0; i < len(t); i += 2 { + r[t[i].(string)] = El(t[i+1]) + } + return r +} + +// Same as []Element{El(a), El(b), ..}) +func Array(t ...interface{}) []Element { + r := make([]Element, len(t)) for i, v := range t { r[i] = El(v) } return r } + +// Same as Tuple(Array(a, b, ...)) +func Tup(t ...interface{}) Tuple { + return Tuple(Array(t...)) +} -- cgit v1.2.3