The simple answer is Parrot won't do any automatic mapping of types between HLLs. If you call a Python library function that returns a Python Dictionary type, you'll get back a Python Dictionary PMC. You can interact with it as a string keyed hash (because it implements the string keyed vtable functions), but if you want to access its more advanced methods you'll have to make method calls on the PMC.

We are absolutely *not* trying to hide the multi-lingual nature of the VM from the users. The multi-lingual nature of Parrot is one of its primary competitive advantages. The basic principle of loading libraries is "you have to learn the interface for the library and the kinds of values it returns", which is true whether the library is written in the same language as your code or a different language. In general, using a Python library and having it return a different type than the documentation says would more confusing than it would be helpful.

Any automatic mapping between multiple languages will fall down at some point in a very ugly way. I imagine modules will be developed to allow you to, for example, mask all Python types from within your Perl 6 code as Perl 6 types. But users will always have the ability to go back to the default, unmodified access to the real types.

Allison

Reply via email to