Graham Fawcett <[email protected]> wrote: > Hi Sean, > > On Tue, 16 Nov 2010 10:45:37 -0500, Sean Kelly wrote: > >> Graham Fawcett Wrote: >> >>> On Fri, 12 Nov 2010 18:15:15 -0500, Sean Kelly wrote: >>>> >>>> To be honest, I haven't spent much time with Go because my >>>> cursory exposure to the language hasn't shown it to solve the >>>> problems I care about better than the languages I currently use. >>>> I think Go is in the right ballpark with channels though, and the >>>> rest is passable. I'm trying to withhold my opinion about the >>>> lack of generics and such and evaluate the language based on >>>> what's there. >>> >>> Since you brought up channels... >>> >>> One thing I very much like about Go (and Haskell, etc.) that I >>> don't think has a counterpart in Phobos is type-safe message >>> passing. I like the flexibility of the current "mailbox" design. >>> But I'd really like an alternative that could enforce type-safety >>> on messages. I don't think per-thread mailboxes could accommodate >>> this, but Channel objects could; e.g.: >>> >>> struct Channel(T) { >>> T receive() { ... } >>> void send(T val) { ... } >>> } >> >> It shouldn't be too difficult to wrap send/receive with such a >> design to provide type safety. In fact, it's one reason I wanted to >> use the flexible model. Of course, using channels would be a matter >> of convention, since both would be available. > > I don't have code at hand, but I remember getting frustrated trying to > put a type-safe wrapper around send/receive. I think the compiler was > failing to correctly type-check the delegates I was using to process > the messages against the types of messages I was trying to enforce. > But I was probably just doing it wrong, I'm still a D newbie.
That's a compiler bug. spawn has the same problem.
