"Like" types
Brendan Eich
brendan at mozilla.org
Fri Oct 26 17:53:39 PDT 2007
On Oct 26, 2007, at 5:11 PM, James Clark wrote:
> Calling the second relationship "like" seems strange to me. An
> object that stands in the strong relationship to a type is just as
> like the type as an object that stands in the weak relationship.
The canonical term (both in theory and in real programming languages,
e.g. C#) for the strong relation is "is", not "like".
See the overview generator example for a pretty combination of the two:
function fringe(tree) {
if (tree is like {left:*, right:*}) {
for (let leaf in fringe(tree.left))
yield leaf
for (let leaf in fringe(tree.right))
yield leaf
}
else
yield tree
}
Try it:
let tree = { left: { left: 37, right: 42 }, right: "foo" }
for ( let x in fringe(tree) )
print(x)
It prints 37, 42, and "foo".
In Firefox 2, you can do exactly this example minus the is like test.
Instead some ad-hoc property-detection is required. See attached.
/be
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.mozilla.org/pipermail/es-discuss/attachments/20071026/e037f417/attachment-0002.html
More information about the Es4-discuss
mailing list