There's also a scala-virtualised branch, mainly intended for DSL support, which I hope to see merged in soon.
This offers: overloadable while loops, if-else, etc. (useful for e.g. translating control flow to OpenCL, or JavaScript) transparent proxies (re-route all calls to a forwarder method) extension methods (easier pimping of your libraries) Maybe it'll even go live by 2.9, if we get lucky :) On 9 September 2010 10:55, Ricky Clarkson <[email protected]> wrote: > You're probably thinking of duck typing specifically. A lot of people > who like dynamic typing like it because the code seems less verbose. > DEF FN f(x) = x * 2 (Spectrum 48K BASIC!) is easier to read than the > equivalent Java: public static int f(int x) { return x * 2; } and even > the equivalent Scala: def f(x: Int) = x * 2, but it should be noted > that there are typed languages (which don't do subtyping) that don't > require you to write types explicitly ever, but don't mind terribly if > you prefer to: > > f x = x * 2 -- Haskell. > > And unlike the Scala or Java versions you can call Haskell's f on > anything that's a member of the Num type class (i.e., Int, Double, > etc.). In Java you'd need to copy and paste f a number of times to > make it work for anything for which * is defined upon. > > Regarding duck typing, most of the benefits of emulating that in Scala > are when working with code that can't be changed. E.g., some types > with a close() in the Java libraries do not implement Closeable, so if > you want to be able to accept anything that can be closed you use > structural types. Other than that I don't think it's worth designing > with structural types in mind. Nominal types will normally be far > superior. > > The other benefits of duck typing can't be emulated with structural > types. You would have to use reflection. Paul Phillips has written a > convenient 'extension method', o, for reflectively accessing methods > not known at compile time, e.g.: > > Class.forName("Bob").newInstance o "fireTheMissiles" > > I'm not convinced that's a good thing, but I think it's just an > experiment and not in the standard library. Perhaps Scala will gain a > 'dynamic' type like C# did recently. I don't think I'd use it other > than if I needed to communicate with Ruby or some other untyped > language, but if there's enough clamour it may happen. > > Ricky. > > -- > Ricky Clarkson > Java and Scala Programmer, AD Holdings > +44 1928 706373 > Skype: ricky_clarkson > > > > On Thu, Sep 9, 2010 at 10:34 AM, B Smith-Mannschott > <[email protected]> wrote: > > > > > > On Thu, Sep 9, 2010 at 08:28, Casper Bang <[email protected]> wrote: > >> > >> > I still have some hope for Fantom because I don't think it crossed > that > >> > threshold yet, but it's getting dangerously close to it. > >> > >> What speaks to Fantom's advantage is it's dynamic typing feature, > >> something Scala ignores completely - in spite of various luminaries > >> view that the static and dynamic world will inevitably merge down to > >> opt-in semantics. Unfortunately Scala seems to run with all the > >> attention, regardless of the bad taste in the mouth it leaves with lot > >> of people. > > > > You can get much of the benefit of dynamic typing by using Scala's > > structural typing: > > http://codemonkeyism.com/scala-goodness-structural-typing/ > > This has been part of the languge since at least 2.6 (July 2007). (3 > years!) > > I'm more and more convinced that the "bad taste in the mouth" people > > complain about is born of ignorance. It's just the natural reaction many > > have when confronted with something new and unfamiliar. Of course one > feels > > like a klutz at first, working with a new language with new concepts, > > conventions and syntax. That's normal. Anyone who's learned more than one > > language must know this by now. I found Clojure pretty weird when I > started, > > and that despite previous exposure to Scheme. Now I find, I can > appreciate > > its advantages. I'd encourange those unfamiliar with Scala to cut it some > > slack or get familiar with it before spouting nonsense. > > // Ben > > > > -- > > You received this message because you are subscribed to the Google Groups > > "The Java Posse" group. > > To post to this group, send email to [email protected]. > > To unsubscribe from this group, send email to > > [email protected]<javaposse%[email protected]> > . > > For more options, visit this group at > > http://groups.google.com/group/javaposse?hl=en. > > > > -- > You received this message because you are subscribed to the Google Groups > "The Java Posse" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]<javaposse%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/javaposse?hl=en. > > -- Kevin Wright mail / gtalk / msn : [email protected] pulse / skype: kev.lee.wright twitter: @thecoda -- You received this message because you are subscribed to the Google Groups "The Java Posse" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/javaposse?hl=en.
