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.

Reply via email to