How do tools like Hiphop for PHP deal with heterogenous arrays?
Posted
by
Derek Thurn
on Stack Overflow
See other posts from Stack Overflow
or by Derek Thurn
Published on 2010-12-25T07:43:25Z
Indexed on
2010/12/25
7:54 UTC
Read the original article
Hit count: 306
I think HipHop for PHP is an interesting tool. It essentially converts PHP code into C++ code. Cross compiling in this manner seems like a great idea, but I have to wonder, how do they overcome the fundamental differences between the two type systems? One specific example of my general question is heterogeneous data structures. Statically typed languages don't tend to let you put arbitrary types into an array or other container because they need to be able to figure out the types on the other end. If I have a PHP array like this:
$mixedBag = array("cat", 42, 8.5, false);
How can this be represented in C++ code? One option would be to use void pointers (or the superior version, boost::any), but then you need to cast when you take stuff back out of the array... and I'm not at all convinced that the type inferencer can always figure out what to cast to at the other end. A better option, perhaps, would be something more like a union (or boost::variant), but then you need to enumerate all possible types at compile time... maybe possible, but certainly messy since arrays can contain arbitrarily complex entities.
Does anyone know how HipHop and similar tools which go from a dynamic typing discipline to a static discipline handle these types of problems?
© Stack Overflow or respective owner