In practice it seems possible to wiggle around this, but it needs a real solution. There are some circular dependencies between evaluation and typing, i.e. a "vector" operation can determine a type, but "unpack" needs type info. How to fix this? A separate type inference step is probably unavoidable.