// Concrete runtime type and homogeneous storage dtype require no import.
class Sample {
    let value: Any
    fn kind() -> String { return type(value) }
}

let mixed = List(42, "sample", 3.5, true, null)
print(type(mixed))
print(dtype(mixed))
print(type(mixed.get(0)))
print(type_of(mixed.get(1)))
print(type(null))
let entry = Sample(value: "  label  ")
print(type(entry))
print(entry.kind())
print(cast<String>(mixed.get(1)).upper())

let fixed = Array<Int64>(size: 2, fill: 0)
let growing = DynamicArray<Float64>(capacity: 4)
growing.append(1.5)
let matrix = NDArray<Bool>(shape: List(2, 3), fill: false)
print(type(fixed))
print(dtype(fixed))
print(type(growing))
print(dtype(growing))
print(type(matrix))
print(dtype(matrix))
print(dtype(true))
