About

I am a software developer in Seattle, building a new AI software company.

Ads

June 2013

Sun Mon Tue Wed Thu Fri Sat
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            

Ads


« Some More Entrepreneurial Fodder | Main | Microsoft At War With Self »

July 11, 2005

Comments

teddy

I have seen some COmega stuff before but it looks like I should really read this paper.

On differentiation of VB and C#, I hope Microsoft announces it explicitly. If C# is for innovation where VB.NET is for real RAD, this could help people choose their languages more easily. (Of course, you would still be able to write quite similar code in both.) I believe that the typical business applications developer shouldn't be bored with closures, contravariants and all similar magic terms. If VB.NET language can hide all these but still can manage to provide the same power C# can (e.g. via COmega data features), then it would be perfect. No VB.NET developer would have to learn about closures.

Matt Warren

I wouldn't draw too much 'inference' from the topics covered by Erik's and Peter's paper.

Jan Bannister

Interesting post Wesner.

I may be misunderstanding your meaning, and if I am please tell me, bu Type Inference doesn't require any advanced AI technique since every C# expression has a type so something like

var = expression;

is unambiguos.

Injecting (Design?) Patters at compile time is somewhat meaningless for any multi class pattern, you might be able to inject Singlton but that would be about it.

Also, how would you implement Eval using closures and object deserializing?

-- Jan

Wesner Moise

I think that the type inferencing not just limited to the var keyword--more along the lines of Haskell.

Even with just the var variable, the compiler could still attempt to resolve a variable to a type that would be compatible with all uses with it.

Wesner Moise

Closures solve most of the uses of eval in which you need to pass a code block to another function along with local variables.

Eval is also used for parsing values such as number and strings, but it's sufficient to just use Parse methods for that purpose.

The other option is to have code literals in which an abstract syntax tree is created by the compiler and then later compiled and executed.

If you look at perl, it has the notion of eval blocks, which are syntactically checked. In perl, you never really need to have a string, except if you are reading code from external programs.

The comments to this entry are closed.