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

Reply via email to