--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to scala-user+unsubscribe@googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to scala-user+unsubscribe@googlegroups.com.
For your own productivity and the benefit of people with teams like yours, it's best not to mix the three up too much.It's unfortunate that Scala hasn't been working out as well as hoped for your team.There are three issues that you address: (1) is Scala working well for your team, and if not why not?; (2) is Scala suitable for business and/or other widespread (non-niche) use?; and (3) to the extent that there is a problem, is it because the development is driven by too many Ph.D.'s?
Taking the first two, "It didn't work for us" is different than "it doesn't work for anyone in business", and both are different than "it is a niche language".
For instance, Python isn't exactly a niche language, and its "monkey-patching" is way, way harder to track down than implicits are. C and C++--not exactly niche languages!--have #define which can make anything look like anything else, pretty much. Even in Java, reflection can be used to make pretty much everything impossible to follow.
None of these things have prevented these languages from enjoying widespread use, because a combination of lore (i.e. "best practices") and tooling can be employed to tame the worst of the problems while still benefiting from the advantages of the feature or at least of the language as a whole.
And, I would argue, exactly the same is true of Scala.So I don't think you make a very compelling case that there is a problem with (2) in general, though there may certainly be difficulties for various application areas.On the other hand, (1) is undoubtedly true if you have felt it necessary to rewrite in Java. I have had trouble fully understanding why from the reasons you gave, which makes it difficult to either think of how to improve Scala (without turning it into a different language) or understand how to warn others not to fall into the same difficulties you did.
For instance, you complain about implicits and mention that the tooling helps but still isn't enough. But then, when implicits stand to rescue you in an easy-to-inspect way from "gymnastics", you blame them? I don't understand how having a compact library that transforms huge boilerplatey gymnastics into something that happens automatically or with what looks like a simple method call is a problem.So I can't really tell if you mean, "The way Play and Akka use implicits is too extensive and we can't find any practices that adequately keep them under control", or you mean, "We used implicits heavily and now we can't keep track of anything any more". If the former, well, that's no consolation to you as a user of the library, but you needn't consign the entire language to "niche" because someone can (and presumably will) write a more business-friendly set of libraries if there's demand for it. If the latter, well, sadly there aren't great resources for learning Scala best practices the way there are for Java. It's kind of an organic process. Maybe you ended up with a chapter or two's worth of antipatterns.
Anyway, you wrote a post on this about 11 months ago, and didn't engage with the community to try to find ways to improve the practices of your team, as far as I can tell (e.g. I gave you a bunch of reasons why implicits are better than other solutions in a number of areas, and suggested trying to limit uses where they cause trouble; other people shared other perspectives; but you didn't reply to the thread at all).
So it didn't work out; that's too bad. But I don't think your post has gone into enough detail to enable others to avoid the same mistakes (except maybe to commiserate if they already had the same problems--"yeah, I hate implicits and macros too"). And it doesn't seem, though it's hard to tell for sure, like you've tried very hard to understand how and why Scala is working well for those who claim it is.
Maybe in a few more years after a few "Scala: Patterns and Antipatterns for Robust Business Systems"-style books, you'll be able to hire people who don't need infeasible amounts of training. And hopefully tooling will be better yet so the essential information leaps out at you all the more and faster.
But implicits will still be there, if it's Scala, because implicits, despite having the capacity to confuse and mislead, are the best way to tell the compiler to safely take some of the repetitive burden off your hands, so you can remember less, need to pay less attention to minutia, and spend your concentration on big/difficult logic where the real challenge ought to be.
--Rex
On Sun, Feb 12, 2017 at 9:16 AM, kraythe <kra...@gmail.com> wrote:
I work in a company that uses the Playframework and Akka to implement a business system. For a long time i was trying to push the implementation towards Scala and away from java. However, I have ultimately given up on that effort and have almost completed refactoring the work to Java. Here is why.First of all the learning curve on Scala is very steep but unnecessarily so. Scala syntax is very brief and but that isn't what holds up the learning curve, nor is it the functional programming concepts, functions as first class entities. These are in fact the good facets of Scala. Pattern matching is absolutely awesome, immutable collections are something that Java is really lacking. In short there is a ton of good things in Scala that attract a developer from Java. But the problem is Scala shoots itself in the foot.Without too much fanfare I will declare that Implicit conversions and Macros make the language very difficult to learn and, outside the academic world, almost inaccessible to business. Implicit conversions and indeed the entire 'implicit" keyword is just lethal to the learning curve as well as code maintenance. In a business world where effort is judged in ROI, anything that just magically transparently happens is a disaster waiting to happen. In fact such disasters do happen. We found that implicits float around in our code interacting in strange ways that were non-deterministic and opaque to reading the code. The beginner looking at a method wonders, "wait how can you call that method on that object?" Then they think and say "oh there is an implicit somewhere in some of my imports somewhere down the tree that convert the type. Its obscure, opaque, confusing and the antithesis of everything that an experienced business developer wants. I used to think that it was just a matter of tooling but IntelliJ has actually decent scala tooling and still implicits are a total disaster. Second problem is Macros. Like implicits they make things happen that are difficult to discern by looking at the code. The introduction of both of these and their rampant use in the language is, in my opinion, going to push Scala to be yet another niche language like lisp, scheme, Erlang and so on.Secondly is the compilation tooling and interaction with java. Scala interacts transparently with java. Well, at least that is what the promotional materials say. In practice to achieve that interaction is a major PITA and I am not talking about flat bread here. Conversions of types require gymnastics. For example, try passing a list of Scala longs to a java method that takes a list of java.util.Long objects. Gymnastics. The function lambdas are non translatable so you cant just pass a Scala lambda to a java function that takes a java.util.Function. You can doctor this with ... wait for it ... an implicit conversion that wraps one into the other. Sigh. In our codebase we had tons of code in both languages and it was just a nightmare going between the two. The tooling doesn't help either because SBT gets in some wacked out logic loops and simply rebuilds the whole project multiple times. After years of Scala development SBT is still slow, and in such a bad state that it isn't even at 1.0.I think Scala has become too academic. Too controlled by those with PhDs. in computer science figuring out what they can do, rather than wondering if they actually should do these things and as a result the language has abandoned some of its roots. It started out as an alternative to Ruby and Java. It was a statically bound deterministic language with functional and Object oriented concepts but it has now strayed into things that happen "magically" and code that is generated with Macros. I personally think one of two things will happen. Either the maintainers of Scala will reverse this direction and get back to basics, dump the implicits and macros and find more deterministic ways to do things. Or, quite frankly, it will die on the vine as another Erlang, Lisp, Node.js or you name it. A language used in a small limited sector for a few projects but without wide acceptance.I, for one would think that is a shame, a horrible waste. Scala could be the next super language if academics stop messing with it like mad scientists with a new toy. Until then, I cant have my whole staff down six months learning scala.-- Robert,-- Principal Software Architect.
--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to scala-user+...@googlegroups.com.
Thanks,
-Vlad
To unsubscribe from this group and stop receiving emails from it, send an email to scala-user+...@googlegroups.com.
I have some replies inline.
On Sunday, February 12, 2017 at 3:29:43 PM UTC-6, Rex Kerr wrote:For your own productivity and the benefit of people with teams like yours, it's best not to mix the three up too much.It's unfortunate that Scala hasn't been working out as well as hoped for your team.There are three issues that you address: (1) is Scala working well for your team, and if not why not?; (2) is Scala suitable for business and/or other widespread (non-niche) use?; and (3) to the extent that there is a problem, is it because the development is driven by too many Ph.D.'s?
Taking the first two, "It didn't work for us" is different than "it doesn't work for anyone in business", and both are different than "it is a niche language".Given the hiring potential its hard to argue this point. I live and work in one of the biggest tech areas around. Finding Scala people who even know the language, not even looking for experts, is near impossible.
Furthermore, I work with a group of people I would consider to be at the top of their game development wise and they have difficulty grasping the language issues.
Sure they can absorb the basics quickly but become immensely frustrated at things happening magically and non-deterministic code in the system.
These aren't lightweight developers but guys that code million transaction a day systems for breakfast.
If it stalls these people how is it going to react to the commodity engineers out there. After 2 years I have the answer to that. it doesn't work at all. This is my empirical observation from business. People can drop scorn on that all they want but its still an empirical observation.
For instance, Python isn't exactly a niche language, and its "monkey-patching" is way, way harder to track down than implicits are. C and C++--not exactly niche languages!--have #define which can make anything look like anything else, pretty much. Even in Java, reflection can be used to make pretty much everything impossible to follow.Which is the reason its much easier for staff a company with Java engineers than either of those languages. Java didnt take over the market because its cross platform.
What I mean is implicits THEMSELVES are an antipattern. Scala went to a lot of effort to make a statically typed functional programming language and then crushed it with Rubyesque "magic" that is not statically typed. Unfortunate.
You cant avoid implicits in Scala. They are pervasive.
But implicits will still be there, if it's Scala, because implicits, despite having the capacity to confuse and mislead, are the best way to tell the compiler to safely take some of the repetitive burden off your hands, so you can remember less, need to pay less attention to minutia, and spend your concentration on big/difficult logic where the real challenge ought to be.I can think of half a dozen techs that said they would take away repetition and went wrong. Repetition is a part of life for developers. Incurring a framework to keep me from casting an object or wrapping it in a decorator by hand is a little overkill don't you think?
On Sun, Feb 12, 2017 at 1:52 PM, kraythe <kra...@gmail.com> wrote:
I have some replies inline.
What I mean is implicits THEMSELVES are an antipattern. Scala went to a lot of effort to make a statically typed functional programming language and then crushed it with Rubyesque "magic" that is not statically typed. Unfortunate.
I am baffled by how you can say this and claim to be more than marginally familiar with Scala.Implicits are completely statically typed. In fact, they are the main user-invokable mechanism for performing type computations. They underlie a huge amount of the machinery in libraries that do advanced type wizardry like scalaz, cats, and shapeless.
--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to scala-user+unsubscribe@googlegroups.com.
But I got the message. It was "F off, your opinions aren't wanted no matter how honestly you offer them." Message received. No more reason for me to post on this thread or indeed group anymore. Twitter abandoned Scalia. Linked in abandoned Scala. So by all means keep beating people upside the head when they offer constructive advice. Could have been wonderful but toss it on the heap of could have been languages.
Peace and good luck.
To be fair, this is everything but not an honest and constructive critique. Your statement:
> I think Scala has become too academic. Too controlled by those with PhDs. in computer science figuring out what they can do, rather than wondering if they actually should do these things and as a result the language has abandoned some of its roots. It started out as an alternative to Ruby and Java.
Is not constructive and quite aggressive and populist. `those with PhDs` are the same people that we have to thank for the progress. Also saying that Scala was an alternative to Ruby is a nonsense. As Ruby and scala have completely different use cases, and so Ruby and Java.
You say Twitter and Linkedin have abandoned Scala, fair enough, but at the same time other, much bigger companies, like Expedia, are embracing it because more and more developers want to write Scala code.
My 2cents.
On Tue, Feb 14, 2017 at 6:55 AM Dennis Haupt <h-s...@gmx.de> wrote:
my ide (intellij) highlights implicit conversions. it's the same for "call by name" parameters. this problem only exists for text editors, and in those, everything is magic because i can't jump to declaractions or check the type of an expressionGesendet: Dienstag, 14. Februar 2017 um 07:45 UhrBetreff: Re: [scala-user] Why I and my company have moved away from Scala. An honest critique.
What I meant is that implicits are. It directly linked to code you can see. If you look at a method and see the code it is not apparent that an implicit is involved. Because they happen "magically.
But I got the message. It was "F off, your opinions aren't wanted no matter how honestly you offer them." Message received. No more reason for me to post on this thread or indeed group anymore. Twitter abandoned Scalia. Linked in abandoned Scala. So by all means keep beating people upside the head when they offer constructive advice. Could have been wonderful but toss it on the heap of could have been languages.
Peace and good luck.
--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to scala-user+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to scala-user+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to scala-user+unsubscribe@googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to scala-user+unsubscribe@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to scala-user+...@googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to scala-user+...@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to scala-user+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to scala-user+unsubscribe@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to scala-user+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to scala-user+unsubscribe@googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to scala-user+unsubscribe@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to scala-user+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to scala-user+unsubscribe@googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to scala-user+unsubscribe@googlegroups.com.
What I meant is that implicits are. It directly linked to code you can see. If you look at a method and see the code it is not apparent that an implicit is involved. Because they happen "magically.
But I got the message. It was "F off, your opinions aren't wanted no matter how honestly you offer them." Message received. No more reason for me to post on this thread or indeed group anymore. Twitter abandoned Scalia. Linked in abandoned Scala. So by all means keep beating people upside the head when they offer constructive advice. Could have been wonderful but toss it on the heap of could have been languages.
Peace and good luck.
--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to scala-user+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
What I meant is that implicits are. It directly linked to code you can see. If you look at a method and see the code it is not apparent that an implicit is involved. Because they happen "magically.But I got the message. It was "F off, your opinions aren't wanted no matter how honestly you offer them." Message received. No more reason for me to post on this thread or indeed group anymore. Twitter abandoned Scalia. Linked in abandoned Scala. So by all means keep beating people upside the head when they offer constructive advice. Could have been wonderful but toss it on the heap of could have been languages.
Thanks, Kris, and everyone else for sharing your thoughtful feedback.The point about antipatterns is an important one. All languages have those, and all language communities acquire cultural knowledge about how to avoid them. It's up to us (the creators and the community together) to document them and share the wisdom with new members of the community. As the creators, we are also always looking for ways to have the language itself guide you away from the antipatterns, where possible.
I believe Scala does a good job at shielding you from many existing antipatterns, but implicits (and their interaction with type inference, which may look like magic, even though it is deterministic) are a harder nut to crack in terms of finding a good balance in the (new) user experience and expressive power.I also would like to reiterate that we value everyone's opinion (that includes criticism, obviously), and we take all feedback to heart. I prefer the actionable kind of feedback, though (I'm not about to give up being a mad scientist ;-)). We care deeply about the productivity of all Scala programmers out there, and are dedicated to improving your experience with Scala in every release.cheersadriaanScala team lead at Lightbend
“Scala has gained ZERO significant traction in the business world.”Assuming that you don’t want your statements to be immediately labeled as FUD (and they certainly look to be tending that way), you’ll need to specify here how you’re defining both “significant traction” and “business world” in order to justify such a claim.My personal experience would lead me to conclude the exact opposite; specifically as regards the rate at which I’m approached by headhunters/recruiters, and how “business worldy” their clients are… presumably investment banks, hedge funds, petro-chemicals, media conglomerates, and other assorted multinationals can all be reasonably classed as belonging to the business world.On 12 February 2017 at 21:54, kraythe <kra...@gmail.com> wrote:No its not. Scala has gained ZERO significant traction in the business world. It is not the next java.
On Sunday, February 12, 2017 at 3:38:13 PM UTC-6, Vlad Patryshev wrote:Oh, and Java of course is just perfect, compared to Scala.Enjoy nulls and NPE, and mutability, and all the dumb frameworks designed by ignorants. You probably won't need generics; Java people just hate generics. They (Java people) are cheaper too.The world is moving on; you decided to take a rest; it's okay, but don't expect others to join.I wonder also what would be your opinion of Rust. Also worse than Java? I'm sure it is. No garbage collection. No Hibernate.Thanks,
-VladOn Sun, Feb 12, 2017 at 9:16 AM, kraythe <kra...@gmail.com> wrote:I work in a company that uses the Playframework and Akka to implement a business system. For a long time i was trying to push the implementation towards Scala and away from java. However, I have ultimately given up on that effort and have almost completed refactoring the work to Java. Here is why.First of all the learning curve on Scala is very steep but unnecessarily so. Scala syntax is very brief and but that isn't what holds up the learning curve, nor is it the functional programming concepts, functions as first class entities. These are in fact the good facets of Scala. Pattern matching is absolutely awesome, immutable collections are something that Java is really lacking. In short there is a ton of good things in Scala that attract a developer from Java. But the problem is Scala shoots itself in the foot.Without too much fanfare I will declare that Implicit conversions and Macros make the language very difficult to learn and, outside the academic world, almost inaccessible to business. Implicit conversions and indeed the entire 'implicit" keyword is just lethal to the learning curve as well as code maintenance. In a business world where effort is judged in ROI, anything that just magically transparently happens is a disaster waiting to happen. In fact such disasters do happen. We found that implicits float around in our code interacting in strange ways that were non-deterministic and opaque to reading the code. The beginner looking at a method wonders, "wait how can you call that method on that object?" Then they think and say "oh there is an implicit somewhere in some of my imports somewhere down the tree that convert the type. Its obscure, opaque, confusing and the antithesis of everything that an experienced business developer wants. I used to think that it was just a matter of tooling but IntelliJ has actually decent scala tooling and still implicits are a total disaster. Second problem is Macros. Like implicits they make things happen that are difficult to discern by looking at the code. The introduction of both of these and their rampant use in the language is, in my opinion, going to push Scala to be yet another niche language like lisp, scheme, Erlang and so on.Secondly is the compilation tooling and interaction with java. Scala interacts transparently with java. Well, at least that is what the promotional materials say. In practice to achieve that interaction is a major PITA and I am not talking about flat bread here. Conversions of types require gymnastics. For example, try passing a list of Scala longs to a java method that takes a list of java.util.Long objects. Gymnastics. The function lambdas are non translatable so you cant just pass a Scala lambda to a java function that takes a java.util.Function. You can doctor this with ... wait for it ... an implicit conversion that wraps one into the other. Sigh. In our codebase we had tons of code in both languages and it was just a nightmare going between the two. The tooling doesn't help either because SBT gets in some wacked out logic loops and simply rebuilds the whole project multiple times. After years of Scala development SBT is still slow, and in such a bad state that it isn't even at 1.0.I think Scala has become too academic. Too controlled by those with PhDs. in computer science figuring out what they can do, rather than wondering if they actually should do these things and as a result the language has abandoned some of its roots. It started out as an alternative to Ruby and Java. It was a statically bound deterministic language with functional and Object oriented concepts but it has now strayed into things that happen "magically" and code that is generated with Macros. I personally think one of two things will happen. Either the maintainers of Scala will reverse this direction and get back to basics, dump the implicits and macros and find more deterministic ways to do things. Or, quite frankly, it will die on the vine as another Erlang, Lisp, Node.js or you name it. A language used in a small limited sector for a few projects but without wide acceptance.I, for one would think that is a shame, a horrible waste. Scala could be the next super language if academics stop messing with it like mad scientists with a new toy. Until then, I cant have my whole staff down six months learning scala.-- Robert,-- Principal Software Architect.
--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to scala-user+unsubscribe@googlegroups.com.
Thanks,
-Vlad
To unsubscribe from this group and stop receiving emails from it, send an email to scala-user+...@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to scala-user+unsubscribe@googlegroups.com.
1. I have nothing to gain from this in either fame or fortune, so what is my motivation?
To unsubscribe from this group and stop receiving emails from it, send an email to scala-user+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Oh by all means be a mad scientist but realize this:1. I have nothing to gain from this in either fame or fortune, so what is my motivation?
2. If you have a language that an experienced senior java programmer can't grasp in a couple weeks and be good at in 2 months or requires expensive training, then it will not get past those startups and little projects. It will never full scale penetrate like Java. If that is fine, then you consent to being an niche language.
3. Major companies have dropped Scala because of point 2.
4. Current companies that adopt Scala will hit point 2 and eventually have to make a decision of do they delay products and revenue or switch back.
5. After years of being out there Scala has meagre penetration, and still bad tooling.
The people I've seen having most problems learning Scala (or the functional stuff in Java 8) are mainly the most experienced Java devs on the team. In other words it's their experience working in Java that holds them back most. The ones who took it on faster were more junior devs who hadn't already shaped a mental model based purely on OO and the Java language. So there is room for evolution in thinking.
--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to scala-user+unsubscribe@googlegroups.com.
18 feb. 2017 kl. 11:15 skrev Bardur Arantsson <sp...@scientician.net>:On 2017-02-18 10:55, Seyed H. HAERI (Hossein) wrote:Hi Siddhartha,dependently typed language,
This is going to be a change of topic I guess. But, I'm too lazy to
spawn a new thread. So, I'm going to ask it here:* The deepest use of implicits is as functions from Types to Objects, using implicit resolutions.
This is wonderful stuff, making scala having some elements of a
Would you mind expanding on that a bit? My understanding has always
been that its in the other direction, i.e., dependently typed
programming gives objects individual type identities. For example, 1
has a different type (representation) than 2 -- at the same time that
they might still be regarded as integers. This way, it's from objects
to types.
Unless something changes drastically soon, the whole Dependent Types in
Scala is a red herring for all practical purposes. Encoding DTs in a
language not meant for it is an absolutely horrible experience -- Scala
and Haskell alike. Just a) look at the implementation of Shapeless and
b) try to use Shapeless for... anything[1]. Usability is, well, let's
just say "less than stellar". This is in large part due to the encodings
which rely on implicit conversions
to fire all over the place... and
when they don't, you're left scratching your head as to with your
"simple" code doesn't compile like the examples do.
Don't get me wrong, Shapeless (and the like) are *engineering* marvels
that show that incredible things are possible, but it *really* shows
(ergonomically) that most of that power is accidental. Much like C++
templates.
(Hopefully Scala macros can be rescued to give us that much needed
metaprogramming power without the obtuseness of type-level programming
in Scala.)
[1] People have managed, but it's a *lot* of effort compared to what it
could be.
Regards,
--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to scala-user+...@googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to scala-user+unsubscribe@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to scala-user+...@googlegroups.com.
--
I completely agree with Petr's post about lack of documentation !I'd love to get a pointer to better explainations about implicits, CanBuildFrom, type inference and its limitations.I could use these to teach to colleagues newcomers to Scala who are still puzzled by these 3.
C# implicit conversions are very limited in comparison to Scala implicits. C# is a sling here, Scala a machine gun. They are only type declaration site hence they have no ad-hoc power. They as well ignore subtype relations during implicit resolution. I don't remember from my short time with C# how they work (if at all) for parametrized types.In C#, if type Bar has implicit conversion to Int and Baz is subtype of Bar without its own implicit conversion to Int than Baz will be never converted to Int implicitly.
--