diff --git a/pkg/gen/gljimports/gljimports_darwin_amd64.go b/pkg/gen/gljimports/gljimports_darwin_amd64.go index f64df1d..862a983 100644 --- a/pkg/gen/gljimports/gljimports_darwin_amd64.go +++ b/pkg/gen/gljimports/gljimports_darwin_amd64.go @@ -3477,6 +3477,8 @@ func RegisterImports(_register func(string, interface{})) { _register("github.com/glojurelang/glojure/pkg/lang.ConstructPersistentStructMap", github_com_glojurelang_glojure_pkg_lang.ConstructPersistentStructMap) _register("github.com/glojurelang/glojure/pkg/lang.Count", github_com_glojurelang_glojure_pkg_lang.Count) _register("github.com/glojurelang/glojure/pkg/lang.Counted", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.Counted)(nil)).Elem()) + _register("github.com/glojurelang/glojure/pkg/lang.CreateLazilyPersistentVector", github_com_glojurelang_glojure_pkg_lang.CreateLazilyPersistentVector) + _register("github.com/glojurelang/glojure/pkg/lang.CreateOwningLazilyPersistentVector", github_com_glojurelang_glojure_pkg_lang.CreateOwningLazilyPersistentVector) _register("github.com/glojurelang/glojure/pkg/lang.CreatePersistentHashMap", github_com_glojurelang_glojure_pkg_lang.CreatePersistentHashMap) _register("github.com/glojurelang/glojure/pkg/lang.CreatePersistentStructMapSlotMap", github_com_glojurelang_glojure_pkg_lang.CreatePersistentStructMapSlotMap) _register("github.com/glojurelang/glojure/pkg/lang.CreatePersistentTreeMap", github_com_glojurelang_glojure_pkg_lang.CreatePersistentTreeMap) @@ -3781,7 +3783,6 @@ func RegisterImports(_register func(string, interface{})) { _register("github.com/glojurelang/glojure/pkg/lang.NewIllegalStateError", github_com_glojurelang_glojure_pkg_lang.NewIllegalStateError) _register("github.com/glojurelang/glojure/pkg/lang.NewIndexOutOfBoundsError", github_com_glojurelang_glojure_pkg_lang.NewIndexOutOfBoundsError) _register("github.com/glojurelang/glojure/pkg/lang.NewKeyword", github_com_glojurelang_glojure_pkg_lang.NewKeyword) - _register("github.com/glojurelang/glojure/pkg/lang.NewLazilyPersistentVector", github_com_glojurelang_glojure_pkg_lang.NewLazilyPersistentVector) _register("github.com/glojurelang/glojure/pkg/lang.NewLazySeq", github_com_glojurelang_glojure_pkg_lang.NewLazySeq) _register("github.com/glojurelang/glojure/pkg/lang.NewList", github_com_glojurelang_glojure_pkg_lang.NewList) _register("github.com/glojurelang/glojure/pkg/lang.NewLongChunk", github_com_glojurelang_glojure_pkg_lang.NewLongChunk) @@ -3814,7 +3815,6 @@ func RegisterImports(_register func(string, interface{})) { _register("github.com/glojurelang/glojure/pkg/lang.NewVar", github_com_glojurelang_glojure_pkg_lang.NewVar) _register("github.com/glojurelang/glojure/pkg/lang.NewVarWithRoot", github_com_glojurelang_glojure_pkg_lang.NewVarWithRoot) _register("github.com/glojurelang/glojure/pkg/lang.NewVector", github_com_glojurelang_glojure_pkg_lang.NewVector) - _register("github.com/glojurelang/glojure/pkg/lang.NewVectorFromCollection", github_com_glojurelang_glojure_pkg_lang.NewVectorFromCollection) _register("github.com/glojurelang/glojure/pkg/lang.NewVolatile", github_com_glojurelang_glojure_pkg_lang.NewVolatile) _register("github.com/glojurelang/glojure/pkg/lang.Next", github_com_glojurelang_glojure_pkg_lang.Next) _register("github.com/glojurelang/glojure/pkg/lang.Node", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.Node)(nil)).Elem()) @@ -3901,6 +3901,7 @@ func RegisterImports(_register func(string, interface{})) { _register("github.com/glojurelang/glojure/pkg/lang.Throwable", github_com_glojurelang_glojure_pkg_lang.Throwable) _register("github.com/glojurelang/glojure/pkg/lang.TimeoutError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.TimeoutError)(nil)).Elem()) _register("*github.com/glojurelang/glojure/pkg/lang.TimeoutError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.TimeoutError)(nil))) + _register("github.com/glojurelang/glojure/pkg/lang.ToSlice", github_com_glojurelang_glojure_pkg_lang.ToSlice) _register("github.com/glojurelang/glojure/pkg/lang.ToString", github_com_glojurelang_glojure_pkg_lang.ToString) _register("github.com/glojurelang/glojure/pkg/lang.TransientMap", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.TransientMap)(nil)).Elem()) _register("*github.com/glojurelang/glojure/pkg/lang.TransientMap", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.TransientMap)(nil))) diff --git a/pkg/gen/gljimports/gljimports_darwin_arm64.go b/pkg/gen/gljimports/gljimports_darwin_arm64.go index eedf4b1..cdc8482 100644 --- a/pkg/gen/gljimports/gljimports_darwin_arm64.go +++ b/pkg/gen/gljimports/gljimports_darwin_arm64.go @@ -3477,6 +3477,8 @@ func RegisterImports(_register func(string, interface{})) { _register("github.com/glojurelang/glojure/pkg/lang.ConstructPersistentStructMap", github_com_glojurelang_glojure_pkg_lang.ConstructPersistentStructMap) _register("github.com/glojurelang/glojure/pkg/lang.Count", github_com_glojurelang_glojure_pkg_lang.Count) _register("github.com/glojurelang/glojure/pkg/lang.Counted", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.Counted)(nil)).Elem()) + _register("github.com/glojurelang/glojure/pkg/lang.CreateLazilyPersistentVector", github_com_glojurelang_glojure_pkg_lang.CreateLazilyPersistentVector) + _register("github.com/glojurelang/glojure/pkg/lang.CreateOwningLazilyPersistentVector", github_com_glojurelang_glojure_pkg_lang.CreateOwningLazilyPersistentVector) _register("github.com/glojurelang/glojure/pkg/lang.CreatePersistentHashMap", github_com_glojurelang_glojure_pkg_lang.CreatePersistentHashMap) _register("github.com/glojurelang/glojure/pkg/lang.CreatePersistentStructMapSlotMap", github_com_glojurelang_glojure_pkg_lang.CreatePersistentStructMapSlotMap) _register("github.com/glojurelang/glojure/pkg/lang.CreatePersistentTreeMap", github_com_glojurelang_glojure_pkg_lang.CreatePersistentTreeMap) @@ -3781,7 +3783,6 @@ func RegisterImports(_register func(string, interface{})) { _register("github.com/glojurelang/glojure/pkg/lang.NewIllegalStateError", github_com_glojurelang_glojure_pkg_lang.NewIllegalStateError) _register("github.com/glojurelang/glojure/pkg/lang.NewIndexOutOfBoundsError", github_com_glojurelang_glojure_pkg_lang.NewIndexOutOfBoundsError) _register("github.com/glojurelang/glojure/pkg/lang.NewKeyword", github_com_glojurelang_glojure_pkg_lang.NewKeyword) - _register("github.com/glojurelang/glojure/pkg/lang.NewLazilyPersistentVector", github_com_glojurelang_glojure_pkg_lang.NewLazilyPersistentVector) _register("github.com/glojurelang/glojure/pkg/lang.NewLazySeq", github_com_glojurelang_glojure_pkg_lang.NewLazySeq) _register("github.com/glojurelang/glojure/pkg/lang.NewList", github_com_glojurelang_glojure_pkg_lang.NewList) _register("github.com/glojurelang/glojure/pkg/lang.NewLongChunk", github_com_glojurelang_glojure_pkg_lang.NewLongChunk) @@ -3814,7 +3815,6 @@ func RegisterImports(_register func(string, interface{})) { _register("github.com/glojurelang/glojure/pkg/lang.NewVar", github_com_glojurelang_glojure_pkg_lang.NewVar) _register("github.com/glojurelang/glojure/pkg/lang.NewVarWithRoot", github_com_glojurelang_glojure_pkg_lang.NewVarWithRoot) _register("github.com/glojurelang/glojure/pkg/lang.NewVector", github_com_glojurelang_glojure_pkg_lang.NewVector) - _register("github.com/glojurelang/glojure/pkg/lang.NewVectorFromCollection", github_com_glojurelang_glojure_pkg_lang.NewVectorFromCollection) _register("github.com/glojurelang/glojure/pkg/lang.NewVolatile", github_com_glojurelang_glojure_pkg_lang.NewVolatile) _register("github.com/glojurelang/glojure/pkg/lang.Next", github_com_glojurelang_glojure_pkg_lang.Next) _register("github.com/glojurelang/glojure/pkg/lang.Node", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.Node)(nil)).Elem()) @@ -3901,6 +3901,7 @@ func RegisterImports(_register func(string, interface{})) { _register("github.com/glojurelang/glojure/pkg/lang.Throwable", github_com_glojurelang_glojure_pkg_lang.Throwable) _register("github.com/glojurelang/glojure/pkg/lang.TimeoutError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.TimeoutError)(nil)).Elem()) _register("*github.com/glojurelang/glojure/pkg/lang.TimeoutError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.TimeoutError)(nil))) + _register("github.com/glojurelang/glojure/pkg/lang.ToSlice", github_com_glojurelang_glojure_pkg_lang.ToSlice) _register("github.com/glojurelang/glojure/pkg/lang.ToString", github_com_glojurelang_glojure_pkg_lang.ToString) _register("github.com/glojurelang/glojure/pkg/lang.TransientMap", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.TransientMap)(nil)).Elem()) _register("*github.com/glojurelang/glojure/pkg/lang.TransientMap", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.TransientMap)(nil))) diff --git a/pkg/gen/gljimports/gljimports_linux_amd64.go b/pkg/gen/gljimports/gljimports_linux_amd64.go index 1ca1c3b..d37adc4 100644 --- a/pkg/gen/gljimports/gljimports_linux_amd64.go +++ b/pkg/gen/gljimports/gljimports_linux_amd64.go @@ -3477,6 +3477,8 @@ func RegisterImports(_register func(string, interface{})) { _register("github.com/glojurelang/glojure/pkg/lang.ConstructPersistentStructMap", github_com_glojurelang_glojure_pkg_lang.ConstructPersistentStructMap) _register("github.com/glojurelang/glojure/pkg/lang.Count", github_com_glojurelang_glojure_pkg_lang.Count) _register("github.com/glojurelang/glojure/pkg/lang.Counted", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.Counted)(nil)).Elem()) + _register("github.com/glojurelang/glojure/pkg/lang.CreateLazilyPersistentVector", github_com_glojurelang_glojure_pkg_lang.CreateLazilyPersistentVector) + _register("github.com/glojurelang/glojure/pkg/lang.CreateOwningLazilyPersistentVector", github_com_glojurelang_glojure_pkg_lang.CreateOwningLazilyPersistentVector) _register("github.com/glojurelang/glojure/pkg/lang.CreatePersistentHashMap", github_com_glojurelang_glojure_pkg_lang.CreatePersistentHashMap) _register("github.com/glojurelang/glojure/pkg/lang.CreatePersistentStructMapSlotMap", github_com_glojurelang_glojure_pkg_lang.CreatePersistentStructMapSlotMap) _register("github.com/glojurelang/glojure/pkg/lang.CreatePersistentTreeMap", github_com_glojurelang_glojure_pkg_lang.CreatePersistentTreeMap) @@ -3781,7 +3783,6 @@ func RegisterImports(_register func(string, interface{})) { _register("github.com/glojurelang/glojure/pkg/lang.NewIllegalStateError", github_com_glojurelang_glojure_pkg_lang.NewIllegalStateError) _register("github.com/glojurelang/glojure/pkg/lang.NewIndexOutOfBoundsError", github_com_glojurelang_glojure_pkg_lang.NewIndexOutOfBoundsError) _register("github.com/glojurelang/glojure/pkg/lang.NewKeyword", github_com_glojurelang_glojure_pkg_lang.NewKeyword) - _register("github.com/glojurelang/glojure/pkg/lang.NewLazilyPersistentVector", github_com_glojurelang_glojure_pkg_lang.NewLazilyPersistentVector) _register("github.com/glojurelang/glojure/pkg/lang.NewLazySeq", github_com_glojurelang_glojure_pkg_lang.NewLazySeq) _register("github.com/glojurelang/glojure/pkg/lang.NewList", github_com_glojurelang_glojure_pkg_lang.NewList) _register("github.com/glojurelang/glojure/pkg/lang.NewLongChunk", github_com_glojurelang_glojure_pkg_lang.NewLongChunk) @@ -3814,7 +3815,6 @@ func RegisterImports(_register func(string, interface{})) { _register("github.com/glojurelang/glojure/pkg/lang.NewVar", github_com_glojurelang_glojure_pkg_lang.NewVar) _register("github.com/glojurelang/glojure/pkg/lang.NewVarWithRoot", github_com_glojurelang_glojure_pkg_lang.NewVarWithRoot) _register("github.com/glojurelang/glojure/pkg/lang.NewVector", github_com_glojurelang_glojure_pkg_lang.NewVector) - _register("github.com/glojurelang/glojure/pkg/lang.NewVectorFromCollection", github_com_glojurelang_glojure_pkg_lang.NewVectorFromCollection) _register("github.com/glojurelang/glojure/pkg/lang.NewVolatile", github_com_glojurelang_glojure_pkg_lang.NewVolatile) _register("github.com/glojurelang/glojure/pkg/lang.Next", github_com_glojurelang_glojure_pkg_lang.Next) _register("github.com/glojurelang/glojure/pkg/lang.Node", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.Node)(nil)).Elem()) @@ -3901,6 +3901,7 @@ func RegisterImports(_register func(string, interface{})) { _register("github.com/glojurelang/glojure/pkg/lang.Throwable", github_com_glojurelang_glojure_pkg_lang.Throwable) _register("github.com/glojurelang/glojure/pkg/lang.TimeoutError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.TimeoutError)(nil)).Elem()) _register("*github.com/glojurelang/glojure/pkg/lang.TimeoutError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.TimeoutError)(nil))) + _register("github.com/glojurelang/glojure/pkg/lang.ToSlice", github_com_glojurelang_glojure_pkg_lang.ToSlice) _register("github.com/glojurelang/glojure/pkg/lang.ToString", github_com_glojurelang_glojure_pkg_lang.ToString) _register("github.com/glojurelang/glojure/pkg/lang.TransientMap", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.TransientMap)(nil)).Elem()) _register("*github.com/glojurelang/glojure/pkg/lang.TransientMap", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.TransientMap)(nil))) diff --git a/pkg/gen/gljimports/gljimports_linux_arm64.go b/pkg/gen/gljimports/gljimports_linux_arm64.go index 7190022..2b23757 100644 --- a/pkg/gen/gljimports/gljimports_linux_arm64.go +++ b/pkg/gen/gljimports/gljimports_linux_arm64.go @@ -3477,6 +3477,8 @@ func RegisterImports(_register func(string, interface{})) { _register("github.com/glojurelang/glojure/pkg/lang.ConstructPersistentStructMap", github_com_glojurelang_glojure_pkg_lang.ConstructPersistentStructMap) _register("github.com/glojurelang/glojure/pkg/lang.Count", github_com_glojurelang_glojure_pkg_lang.Count) _register("github.com/glojurelang/glojure/pkg/lang.Counted", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.Counted)(nil)).Elem()) + _register("github.com/glojurelang/glojure/pkg/lang.CreateLazilyPersistentVector", github_com_glojurelang_glojure_pkg_lang.CreateLazilyPersistentVector) + _register("github.com/glojurelang/glojure/pkg/lang.CreateOwningLazilyPersistentVector", github_com_glojurelang_glojure_pkg_lang.CreateOwningLazilyPersistentVector) _register("github.com/glojurelang/glojure/pkg/lang.CreatePersistentHashMap", github_com_glojurelang_glojure_pkg_lang.CreatePersistentHashMap) _register("github.com/glojurelang/glojure/pkg/lang.CreatePersistentStructMapSlotMap", github_com_glojurelang_glojure_pkg_lang.CreatePersistentStructMapSlotMap) _register("github.com/glojurelang/glojure/pkg/lang.CreatePersistentTreeMap", github_com_glojurelang_glojure_pkg_lang.CreatePersistentTreeMap) @@ -3781,7 +3783,6 @@ func RegisterImports(_register func(string, interface{})) { _register("github.com/glojurelang/glojure/pkg/lang.NewIllegalStateError", github_com_glojurelang_glojure_pkg_lang.NewIllegalStateError) _register("github.com/glojurelang/glojure/pkg/lang.NewIndexOutOfBoundsError", github_com_glojurelang_glojure_pkg_lang.NewIndexOutOfBoundsError) _register("github.com/glojurelang/glojure/pkg/lang.NewKeyword", github_com_glojurelang_glojure_pkg_lang.NewKeyword) - _register("github.com/glojurelang/glojure/pkg/lang.NewLazilyPersistentVector", github_com_glojurelang_glojure_pkg_lang.NewLazilyPersistentVector) _register("github.com/glojurelang/glojure/pkg/lang.NewLazySeq", github_com_glojurelang_glojure_pkg_lang.NewLazySeq) _register("github.com/glojurelang/glojure/pkg/lang.NewList", github_com_glojurelang_glojure_pkg_lang.NewList) _register("github.com/glojurelang/glojure/pkg/lang.NewLongChunk", github_com_glojurelang_glojure_pkg_lang.NewLongChunk) @@ -3814,7 +3815,6 @@ func RegisterImports(_register func(string, interface{})) { _register("github.com/glojurelang/glojure/pkg/lang.NewVar", github_com_glojurelang_glojure_pkg_lang.NewVar) _register("github.com/glojurelang/glojure/pkg/lang.NewVarWithRoot", github_com_glojurelang_glojure_pkg_lang.NewVarWithRoot) _register("github.com/glojurelang/glojure/pkg/lang.NewVector", github_com_glojurelang_glojure_pkg_lang.NewVector) - _register("github.com/glojurelang/glojure/pkg/lang.NewVectorFromCollection", github_com_glojurelang_glojure_pkg_lang.NewVectorFromCollection) _register("github.com/glojurelang/glojure/pkg/lang.NewVolatile", github_com_glojurelang_glojure_pkg_lang.NewVolatile) _register("github.com/glojurelang/glojure/pkg/lang.Next", github_com_glojurelang_glojure_pkg_lang.Next) _register("github.com/glojurelang/glojure/pkg/lang.Node", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.Node)(nil)).Elem()) @@ -3901,6 +3901,7 @@ func RegisterImports(_register func(string, interface{})) { _register("github.com/glojurelang/glojure/pkg/lang.Throwable", github_com_glojurelang_glojure_pkg_lang.Throwable) _register("github.com/glojurelang/glojure/pkg/lang.TimeoutError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.TimeoutError)(nil)).Elem()) _register("*github.com/glojurelang/glojure/pkg/lang.TimeoutError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.TimeoutError)(nil))) + _register("github.com/glojurelang/glojure/pkg/lang.ToSlice", github_com_glojurelang_glojure_pkg_lang.ToSlice) _register("github.com/glojurelang/glojure/pkg/lang.ToString", github_com_glojurelang_glojure_pkg_lang.ToString) _register("github.com/glojurelang/glojure/pkg/lang.TransientMap", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.TransientMap)(nil)).Elem()) _register("*github.com/glojurelang/glojure/pkg/lang.TransientMap", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.TransientMap)(nil))) diff --git a/pkg/gen/gljimports/gljimports_windows.go b/pkg/gen/gljimports/gljimports_windows.go index 608145d..b75f04c 100644 --- a/pkg/gen/gljimports/gljimports_windows.go +++ b/pkg/gen/gljimports/gljimports_windows.go @@ -3477,6 +3477,8 @@ func RegisterImports(_register func(string, interface{})) { _register("github.com/glojurelang/glojure/pkg/lang.ConstructPersistentStructMap", github_com_glojurelang_glojure_pkg_lang.ConstructPersistentStructMap) _register("github.com/glojurelang/glojure/pkg/lang.Count", github_com_glojurelang_glojure_pkg_lang.Count) _register("github.com/glojurelang/glojure/pkg/lang.Counted", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.Counted)(nil)).Elem()) + _register("github.com/glojurelang/glojure/pkg/lang.CreateLazilyPersistentVector", github_com_glojurelang_glojure_pkg_lang.CreateLazilyPersistentVector) + _register("github.com/glojurelang/glojure/pkg/lang.CreateOwningLazilyPersistentVector", github_com_glojurelang_glojure_pkg_lang.CreateOwningLazilyPersistentVector) _register("github.com/glojurelang/glojure/pkg/lang.CreatePersistentHashMap", github_com_glojurelang_glojure_pkg_lang.CreatePersistentHashMap) _register("github.com/glojurelang/glojure/pkg/lang.CreatePersistentStructMapSlotMap", github_com_glojurelang_glojure_pkg_lang.CreatePersistentStructMapSlotMap) _register("github.com/glojurelang/glojure/pkg/lang.CreatePersistentTreeMap", github_com_glojurelang_glojure_pkg_lang.CreatePersistentTreeMap) @@ -3781,7 +3783,6 @@ func RegisterImports(_register func(string, interface{})) { _register("github.com/glojurelang/glojure/pkg/lang.NewIllegalStateError", github_com_glojurelang_glojure_pkg_lang.NewIllegalStateError) _register("github.com/glojurelang/glojure/pkg/lang.NewIndexOutOfBoundsError", github_com_glojurelang_glojure_pkg_lang.NewIndexOutOfBoundsError) _register("github.com/glojurelang/glojure/pkg/lang.NewKeyword", github_com_glojurelang_glojure_pkg_lang.NewKeyword) - _register("github.com/glojurelang/glojure/pkg/lang.NewLazilyPersistentVector", github_com_glojurelang_glojure_pkg_lang.NewLazilyPersistentVector) _register("github.com/glojurelang/glojure/pkg/lang.NewLazySeq", github_com_glojurelang_glojure_pkg_lang.NewLazySeq) _register("github.com/glojurelang/glojure/pkg/lang.NewList", github_com_glojurelang_glojure_pkg_lang.NewList) _register("github.com/glojurelang/glojure/pkg/lang.NewLongChunk", github_com_glojurelang_glojure_pkg_lang.NewLongChunk) @@ -3814,7 +3815,6 @@ func RegisterImports(_register func(string, interface{})) { _register("github.com/glojurelang/glojure/pkg/lang.NewVar", github_com_glojurelang_glojure_pkg_lang.NewVar) _register("github.com/glojurelang/glojure/pkg/lang.NewVarWithRoot", github_com_glojurelang_glojure_pkg_lang.NewVarWithRoot) _register("github.com/glojurelang/glojure/pkg/lang.NewVector", github_com_glojurelang_glojure_pkg_lang.NewVector) - _register("github.com/glojurelang/glojure/pkg/lang.NewVectorFromCollection", github_com_glojurelang_glojure_pkg_lang.NewVectorFromCollection) _register("github.com/glojurelang/glojure/pkg/lang.NewVolatile", github_com_glojurelang_glojure_pkg_lang.NewVolatile) _register("github.com/glojurelang/glojure/pkg/lang.Next", github_com_glojurelang_glojure_pkg_lang.Next) _register("github.com/glojurelang/glojure/pkg/lang.Node", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.Node)(nil)).Elem()) @@ -3901,6 +3901,7 @@ func RegisterImports(_register func(string, interface{})) { _register("github.com/glojurelang/glojure/pkg/lang.Throwable", github_com_glojurelang_glojure_pkg_lang.Throwable) _register("github.com/glojurelang/glojure/pkg/lang.TimeoutError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.TimeoutError)(nil)).Elem()) _register("*github.com/glojurelang/glojure/pkg/lang.TimeoutError", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.TimeoutError)(nil))) + _register("github.com/glojurelang/glojure/pkg/lang.ToSlice", github_com_glojurelang_glojure_pkg_lang.ToSlice) _register("github.com/glojurelang/glojure/pkg/lang.ToString", github_com_glojurelang_glojure_pkg_lang.ToString) _register("github.com/glojurelang/glojure/pkg/lang.TransientMap", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.TransientMap)(nil)).Elem()) _register("*github.com/glojurelang/glojure/pkg/lang.TransientMap", reflect.TypeOf((*github_com_glojurelang_glojure_pkg_lang.TransientMap)(nil))) diff --git a/pkg/lang/lazilypersistentvector.go b/pkg/lang/lazilypersistentvector.go new file mode 100644 index 0000000..63f5616 --- /dev/null +++ b/pkg/lang/lazilypersistentvector.go @@ -0,0 +1,27 @@ +package lang + +func CreateOwningLazilyPersistentVector(items ...any) IPersistentVector { + if len(items) <= 32 { + return NewVector(items...) + } + return NewVector(items...) +} + +func CreateLazilyPersistentVector(obj any) IPersistentVector { + switch obj := obj.(type) { + case IReduceInit: + return obj.ReduceInit(IFnFunc(func(args ...any) any { + acc, item := args[0], args[1] + return acc.(IPersistentVector).Cons(item) + }), emptyVector).(IPersistentVector) + case ISeq: + // TODO: optimize for ISeq by building the tree directly with a + // PersistentVector implementaiton + slc := seqToSlice(obj) + return NewVector(slc...) + case Seqable: + return CreateLazilyPersistentVector(obj.Seq()) + default: + return NewVector(ToSlice(obj)...) + } +} diff --git a/pkg/lang/slices.go b/pkg/lang/slices.go index 06bf0a9..469cde5 100644 --- a/pkg/lang/slices.go +++ b/pkg/lang/slices.go @@ -1,8 +1,33 @@ package lang -import "reflect" +import ( + "fmt" + "reflect" +) -func SliceSet(slc interface{}, idx int, val interface{}) { +func SliceSet(slc any, idx int, val any) { slcVal := reflect.ValueOf(slc) slcVal.Index(idx).Set(reflect.ValueOf(val)) } + +func ToSlice(x any) []any { + if IsNil(x) { + return nil + } + if s, ok := x.(ISeq); ok { + res := make([]interface{}, 0, Count(x)) + for s := Seq(s); s != nil; s = s.Next() { + res = append(res, s.First()) + } + return res + } + xVal := reflect.ValueOf(x) + if xVal.Kind() == reflect.Slice || xVal.Kind() == reflect.Array { + res := make([]interface{}, xVal.Len()) + for i := 0; i < xVal.Len(); i++ { + res[i] = xVal.Index(i).Interface() + } + return res + } + panic(fmt.Errorf("ToSlice not supported on type: %T", x)) +} diff --git a/pkg/lang/vector.go b/pkg/lang/vector.go index 45a7f6c..26578ee 100644 --- a/pkg/lang/vector.go +++ b/pkg/lang/vector.go @@ -51,26 +51,6 @@ func NewVector(values ...any) *Vector { } } -func NewVectorFromCollection(c any) *Vector { - // TODO: match clojure's behavior here. for now, just make it work - // for seqs. - var items []any - for seq := Seq(c); seq != nil; seq = seq.Next() { - items = append(items, seq.First()) - } - return NewVector(items...) -} - -func NewLazilyPersistentVector(x any) IPersistentVector { - // TODO: IReduceInit, Iterable - switch x := x.(type) { - case ISeq: - return NewVectorFromCollection(x) - default: - return NewVector(toSlice(x)...) - } -} - var ( _ APersistentVector = (*Vector)(nil) _ IPersistentVector = (*Vector)(nil) diff --git a/pkg/runtime/rtcompat.go b/pkg/runtime/rtcompat.go index 4df7a98..d419258 100644 --- a/pkg/runtime/rtcompat.go +++ b/pkg/runtime/rtcompat.go @@ -167,30 +167,14 @@ func (rt *RTMethods) FindVar(qualifiedSym *Symbol) *Var { func (rt *RTMethods) Alength(x interface{}) int { xVal := reflect.ValueOf(x) - if xVal.Kind() == reflect.Slice { + if xVal.Kind() == reflect.Slice || xVal.Kind() == reflect.Array { return xVal.Len() } panic(fmt.Errorf("Alength not supported on type: %T", x)) } func (rt *RTMethods) ToArray(coll interface{}) interface{} { - if lang.IsNil(coll) { - return nil - } - switch coll := coll.(type) { - case []interface{}: - return coll - case lang.ISeq, lang.IPersistentCollection: - res := make([]interface{}, 0, lang.Count(coll)) - for s := lang.Seq(coll); s != nil; s = lang.Next(s) { - res = append(res, lang.First(s)) - } - return res - } - if v := reflect.ValueOf(coll); v.Kind() == reflect.Slice { - return coll - } - panic(fmt.Errorf("ToArray not supported on type: %T", coll)) + return lang.ToSlice(coll) } var ( diff --git a/pkg/stdlib/glojure/core.glj b/pkg/stdlib/glojure/core.glj index 0458b33..6b94f3b 100644 --- a/pkg/stdlib/glojure/core.glj +++ b/pkg/stdlib/glojure/core.glj @@ -361,7 +361,7 @@ ([a b c d e] [a b c d e]) ([a b c d e f] [a b c d e f]) ([a b c d e f & args] - (github.com$glojurelang$glojure$pkg$lang.NewLazilyPersistentVector (cons a (cons b (cons c (cons d (cons e (cons f args))))))))) + (github.com$glojurelang$glojure$pkg$lang.CreateLazilyPersistentVector (cons a (cons b (cons c (cons d (cons e (cons f args))))))))) (defn vec "Creates a new vector containing the contents of coll. Java arrays @@ -372,8 +372,8 @@ (if (vector? coll) (if (instance? github.com$glojurelang$glojure$pkg$lang.IObj coll) (with-meta coll nil) - (github.com$glojurelang$glojure$pkg$lang.NewVectorFromCollection coll)) - (github.com$glojurelang$glojure$pkg$lang.NewVectorFromCollection coll)))) + (github.com$glojurelang$glojure$pkg$lang.CreateLazilyPersistentVector coll)) + (github.com$glojurelang$glojure$pkg$lang.CreateLazilyPersistentVector coll)))) (defn hash-map "keyval => key val diff --git a/pkg/stdlib/glojure/string.glj b/pkg/stdlib/glojure/string.glj index ba221d4..879b7c9 100644 --- a/pkg/stdlib/glojure/string.glj +++ b/pkg/stdlib/glojure/string.glj @@ -8,8 +8,7 @@ (ns glojure.string (:refer-glojure :exclude (replace reverse)) - (:import (java.util.regex Pattern Matcher) - glojure.lang.LazilyPersistentVector)) + (:import (java.util.regex Pattern Matcher))) (set! *warn-on-reflection* true) diff --git a/scripts/rewrite-core/rewrite.clj b/scripts/rewrite-core/rewrite.clj index 578cfef..09e39b7 100644 --- a/scripts/rewrite-core/rewrite.clj +++ b/scripts/rewrite-core/rewrite.clj @@ -386,7 +386,14 @@ (sexpr-replace 'clojure.lang.RT/assoc 'github.com$glojurelang$glojure$pkg$lang.Assoc) (sexpr-replace 'clojure.lang.RT/subvec 'github.com$glojurelang$glojure$pkg$lang.Subvec) (sexpr-replace 'clojure.lang.Util/identical 'github.com$glojurelang$glojure$pkg$lang.Identical) - (sexpr-replace 'clojure.lang.LazilyPersistentVector/create 'github.com$glojurelang$glojure$pkg$lang.NewVectorFromCollection) + + (sexpr-replace '(:import (java.util.regex Pattern Matcher) clojure.lang.LazilyPersistentVector) + '(:import (java.util.regex Pattern Matcher))) + (sexpr-replace 'clojure.lang.LazilyPersistentVector/create + 'github.com$glojurelang$glojure$pkg$lang.CreateLazilyPersistentVector) + (sexpr-replace 'clojure.lang.LazilyPersistentVector/createOwning + 'github.com$glojurelang$glojure$pkg$lang.CreateOwningLazilyPersistentVector) + (sexpr-replace '(. clojure.lang.RT (seq coll)) '(github.com$glojurelang$glojure$pkg$lang.Seq coll)) (sexpr-replace '(list 'new 'clojure.lang.LazySeq (list* '^{:once true} fn* [] body)) '(list 'github.com$glojurelang$glojure$pkg$lang.NewLazySeq (list* '^{:once true} fn* [] body))) @@ -605,7 +612,7 @@ (sexpr-replace '(. clojure.lang.LazilyPersistentVector (create (cons a (cons b (cons c (cons d (cons e (cons f args)))))))) - '(github.com$glojurelang$glojure$pkg$lang.NewLazilyPersistentVector (cons a (cons b (cons c (cons d (cons e (cons f args)))))))) + '(github.com$glojurelang$glojure$pkg$lang.CreateLazilyPersistentVector (cons a (cons b (cons c (cons d (cons e (cons f args)))))))) (sexpr-replace 'clojure.lang.IDrop 'github.com$glojurelang$glojure$pkg$lang.IDrop)