4f849ebd34
The type inference for collections (tuples, vectors, matrices, and records) has been significantly refactored. This includes: - Introducing distinct `StaticType` variants for `Tuple`, `Vector`, and `Matrix`. - Implementing more robust type checking for these collections, allowing for homogeneous and heterogeneous structures. - Enhancing the `is_assignable_from` method to handle type compatibility between these collection types. - Updating `Value::static_type()` to correctly infer the types of literal collections. - Improving the type inference for map literals to create `Record` types. - Adding comprehensive unit tests for tuple, vector, matrix, and record type inference.
20 lines
621 B
Plaintext
20 lines
621 B
Plaintext
;; Benchmark: 1.9us
|
|
;; Demonstration of N-dimensional Tuples, Vectors, and Matrices
|
|
;; Based on docs/Tupel 1.md
|
|
;;
|
|
;; This test verifies that the literals are correctly parsed and represented.
|
|
;; Type inference is verified via internal compiler unit tests.
|
|
;;
|
|
;; Output: [[1 3.14 "text"] [10 20 30 40] [[1 2] [3 4]] [[[1 2] [3 4]] [[5 6] [7 8]]] [[1 2] [3 4 5]] {:x 1, :y 0.3}]
|
|
|
|
(do
|
|
(def tpl [1, 3.14, "text"])
|
|
(def v [10 20 30 40])
|
|
(def mat2d [[1 2], [3 4]])
|
|
(def mat3d [[[1 2] [3 4]] [[5 6] [7 8]]])
|
|
(def mixed [[1 2] [3 4 5]])
|
|
(def rec {:x 1, :y 0.3})
|
|
|
|
[tpl v mat2d mat3d mixed rec]
|
|
)
|