I remember that discussion; in fact, I had a response, http://arclanguage.org/item?id=3518, in which I proposed this (and I might have been working on this at the time).
The clearest advantage of distinct types is in things like binary trees:
you can't quickly tell what's a binary tree and what isn't in the same way, and you lose the invariant that a branch's left and right are both binary trees. At the same time, something more like vtype would remove
And you should be able to write a macro that will convert something nicer to that form, e.g.
(vcase var
variant1 (do-something var)
variant2 (do-something-else var)
(fail))
. I'll work on that and push it to Anarki.
I'm not convinced on the auto-binding; I implemented it that way because the resulting syntax was nice. It might make sense to have an option to work without auto-binding of names, but maybe it won't actually be an issue in practice. car and cdr are a bit atypical because (I hope) you won't be redefining a list type :)