Sounds like we have a misunderstanding alright. I'm gonna get dinner, then think of a way to get to the bottom of this.
On Sat, May 30, 2015 at 4:39 PM, Jonathan S. Shapiro <[email protected]> wrote: > On Sat, May 30, 2015 at 12:11 PM, Matt Oliveri <[email protected]> wrote: >> >> > From a language design perspective, there seem to be two possible ways >> > to >> > deal with this sort of pattern: >> >> Maybe we had a misunderstanding. The Node<_> solution I gave a week >> ago is something that I believe can already be applied in pertty much >> any language with generics. (But it seems useful primarily when you >> don't have subclasses, since subclasses already let you factor out >> common fields to the superclass.) So BitC will automatically have a >> statically-checked solution to your problem, one way or another. > > > I don't know of any language in which the Node<T> solution works. > > Ignore, for a moment, the grouping issue that i raised earlier. Union leg > names are not types in current languages, and therefore cannot be specified > as a resolution for the type parameter T. Can you give a simple illustrating > example of how this would work? Maybe I'm missing something. I don't see a > mechanism to do type-indexed children. > >> >> You don't need to do anything special when defining "AST"/"Node" in >> order it thread recursiveness through it later. > > > Sure you do, because union leg names aren't types! > >> >> By "thread recursiveness" through a type constructor, we mean pass a >> recurrence (a reference to something currently being recursively >> defined) to the type constructor, I assume. > > > But in these languages there is no way to obtain a reference to either a > type constructor or a value constructor! > >> >> > The two parts of this that are a bit unusual are that the type AST< T <: >> > ASTTree > and the type ASTTree are co-recursively defined, so we >> > probably >> > end up needing something similar to letrec for this definition. Perhaps >> > typerec? >> >> Yes and no. AST<T> doesn't depend on ASTTree... > > > Of course it does! The arguments we want at T are the leg types of ASTTree! _______________________________________________ bitc-dev mailing list [email protected] http://www.coyotos.org/mailman/listinfo/bitc-dev
