I haven't used ATS, but I don't think it interops strongly. Hows does calling a ATS function with fancy typed arguments from C work?
My idea of strong interop is not having to write any glue code at all and being able to call any function. I assume there are some types that don't interface with C well.
That said, thanks for mentioning it. I should keep it in mind as it does do some of the stuff I want my language to.