digitalmars.D - [OT] The Clay Programming Language
- Lurker (2/2) Jul 26 2010 Interesting generics
- bearophile (26/41) Jul 26 2010 From what I have seen its generics are almost normal, the main differenc...
- Kagamin (3/6) Jul 26 2010 Yet another write-only language?
- Nick Sabalausky (8/10) Jul 26 2010 There seems to be a real explosion of systems langauges these days. It's...
- Rainer Deyke (7/10) Jul 26 2010 This looks very much like the programming language that I was /going/ to
Interesting generics http://www.reddit.com/r/programming/comments/ctmxx/the_clay_programming_language/
Jul 26 2010
Lurker:Interesting generics http://www.reddit.com/r/programming/comments/ctmxx/the_clay_programming_language/From what I have seen its generics are almost normal, the main difference is the whole-program type inference (that supports a good overloading too). In the thread kssreeram says that it doeesn't have the higher kinds of Scala, but he/she says "Template-template parameters are much cleaner in Clay":record Point[T] { x : T; y : T; } [Kind, CoordType] initialize(static Kind, x:CoordType, y:CoordType) { var p = Kind[CoordType](x, y); return p; } var intP = initialize(Point, 10, 10); var doubleP = intialize(Point, 1.2, 3.4);You can write something similar in D too: struct Point(T) { T x, y; } auto initialize(alias Kind, CoordType)(CoordType x, CoordType y) { return Kind!CoordType(x, y); } void main() { auto intP = initialize!Point(10, 10); auto doubleP = initialize!Point(1.2, 3.4); } But in D initialize() you must use 'alias' for the template struct argument (otherwise the error message is so bad that I am considering asking for a better error message in Bugzilla). If you forget the 'alias' (as I have originally done) dmd 2.047 prints: test.d(10): Error: template test.initialize(Kind,CoordType) does not match any function template declaration test.d(10): Error: template test.initialize(Kind,CoordType) cannot deduce template function from argument types !(Point)(int,int) test.d(10): Error: template instance errors instantiating template test.d(11): Error: template test.initialize(Kind,CoordType) does not match any function template declaration test.d(11): Error: template test.initialize(Kind,CoordType) cannot deduce template function from argument types !(Point)(double,double) test.d(11): Error: template instance errors instantiating template That's noisy and doesn't help much to find what is missing. A better error message can be something like: test.d(10): Error: in template test.initialize(Kind,CoordType) template template argument 'Kind' needs 'alias'. The main problem I've seen with the Clay language is its main feature: with ShedSkin I have seen that global type inference doesn't scale. When the program is past a certain size the compilation becomes too much slow. I don't know how the author wants to solve this big problem. Many of the limits of D language come from its 'separate compilations' requirement, but with such limits comes also out practical compile times for larger projects. One way to solve the problem for Clay can be to define compilation 'packages', where you define types in an explicit way on their borders. So type inference can stop at such borders and such packages become your compilation units (there are other ways to 'manually' fully specify the types along such borders, for example in ShedSkin for such purpose I have used unittests! They can be used to give a full specification). Bye, bearophile
Jul 26 2010
Lurker Wrote:Interesting generics http://www.reddit.com/r/programming/comments/ctmxx/the_clay_programming_language/Yet another write-only language? It's an interesting approach to improve a guru's writing abilities in order to not need the second developer.
Jul 26 2010
"Lurker" <dont_spam place.net> wrote in message news:i2k8cc$5h8$1 digitalmars.com...Interesting generics http://www.reddit.com/r/programming/comments/ctmxx/the_clay_programming_language/There seems to be a real explosion of systems langauges these days. It's a refreshing change from the "VMs-as-a-panacea" nonsence from 5-10 years ago (as well as the "C/C++ is as good as systems-langauges can possibly get, and is perfectly good enough" garbage from the same time period). ------------------------------- Not sent from an iPhone.
Jul 26 2010
On 7/26/2010 09:07, Lurker wrote:Interesting generics http://www.reddit.com/r/programming/comments/ctmxx/the_clay_programming_language/This looks very much like the programming language that I was /going/ to write myself when I had some free time. Your post just justified the hours I spent reading the D newsgroups even though my interest in D has almost died. Thanks for posting! -- Rainer Deyke - rainerd eldwood.com
Jul 26 2010