Scala could add .map, .flatMap etc., to, say, java.util.Enumeration, via implicit conversions, so then you could write:
for (element <- enumeration) stuff using element In Java you'll need an explicit wrapper object, i.e., noise. On Tue, Jul 31, 2012 at 1:44 PM, Dale Wijnand <[email protected]>wrote: > I fail to see how that is any different to Java's for-each depending on > Iterable. You've replaced depending on a type with adhering to a > implied method signature, or am I missing something? > > Dale > > > On 31 July 2012 18:39, Kevin Wright <[email protected]> wrote: > >> You can implement FilterMonadic if you want, but the compiler doesn't >> demand that you do. >> >> It's more useful as a marker trait, and to be sure that you've >> implemented all the methods that you intended to implement. >> >> comprehensions are transformed to map/flatMap/etc. very early on in the >> compiler, and certainly don't rely on any type information. >> >> >> >> On 31 July 2012 14:45, Dale Wijnand <[email protected]> wrote: >> >>> Doesn't that mean it must >>> implement scala.collection.generic.FilterMonadic? >>> (or is it scala.collection.GenTraversableOnce..) >>> >>> Dale >>> >>> On 31 July 2012 14:46, Kevin Wright <[email protected]> wrote: >>> >>>> Without lambdas, you're a bit limited here. But with them, I've found >>>> scala's approach to work well. >>>> >>>> for(x <- xs) { println(x) } >>>> >>>> is just syntactic sugar for >>>> >>>> xs foreach { x => println(x) } >>>> >>>> >>>> >>>> and >>>> >>>> for(x <- xs) yield { x.toUpperCase } >>>> >>>> is >>>> >>>> xs map { x => x.toUpperCase } >>>> >>>> >>>> *anything* with the appropriate map/flatMap/filter/foreach method(s) on >>>> can be used in a for-comprehension. >>>> (which is why scala doesn't call it a "for loop", because it really >>>> isn't) >>>> >>>> >>>> On 31 July 2012 13:31, Dale Wijnand <[email protected]> wrote: >>>> >>>>> I would say you could create delegating iterables/iterators for those >>>>> types. What would be an alternative would you have preferred? >>>>> >>>>> Dale >>>>> >>>>> On 31 July 2012 14:17, Kevin Wright <[email protected]> wrote: >>>>> >>>>>> Yes/No. You're still forced to only use it with things that can be >>>>>> Iterables, yet there's a whole category of stuff where foreach makes >>>>>> sense, >>>>>> but can't be represented in this manner. >>>>>> >>>>>> One of the more obvious examples here is something like a stream of >>>>>> lines coming over a network socket, in which you want the body of the >>>>>> foreach expression to be executed asynchronously for each incoming line >>>>>> (perhaps by dispatching to a thread pool), and for the expression as a >>>>>> whole to be non-blocking. >>>>>> >>>>>> >>>>>> On 31 July 2012 08:15, Roland Tepp <[email protected]> wrote: >>>>>> >>>>>>> Sorry, couldn't resist, but let your class implement Iterable and >>>>>>> voila - the foreach is extended! >>>>>>> >>>>>>> esmaspäev, 30. juuli 2012 15:55.30 UTC+3 kirjutas Ricky Clarkson: >>>>>>> >>>>>>>> 6. foreach is not open for extension, i.e., it only works with >>>>>>>> Iterables and arrays. >>>>>>>> >>>>>>> >>>>>> >>>>>> >>>> > -- > You received this message because you are subscribed to the Google Groups > "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. > -- You received this message because you are subscribed to the Google Groups "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.
