Calypso question

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
14 messages Options
Reply | Threaded
Open this post in threaded view
|

Calypso question

Stephane Ducasse-3
Hi denis

I'm doing a pass on the architecture of calypso chapter :) as a way to
force me to understand it better.

Now I do not understand why the following does not work.

| env classScope |
env := ClySystemNavigationEnvironment currentImage.
classScope := env selectScope: ClyClassScope of: {Point. Collection}.
classScope allClasses


another question

packageScope query: (ClyMessageSenders of: #(do: x))

It is returning all the senders of do: and the senders of x
or
returning all the sender of do: and x


Stef

Reply | Threaded
Open this post in threaded view
|

Re: Calypso question

Denis Kudriashov
Hi

2017-09-22 20:41 GMT+02:00 Stephane Ducasse <[hidden email]>:
Hi denis

I'm doing a pass on the architecture of calypso chapter :) as a way to
force me to understand it better.

Now I do not understand why the following does not work.

| env classScope |
env := ClySystemNavigationEnvironment currentImage.
classScope := env selectScope: ClyClassScope of: {Point. Collection}.
classScope allClasses


Probably it is not implemented. Each scope should implement what can be retrieved from it.
If something was not needed for browser implementation then it will not work. (I not implemented it).

But try also with ClyLocalClassScope. I did little refactoring and it can be not reflected in any doc/comment.
 

another question

packageScope query: (ClyMessageSenders of: #(do: x))

It is returning all the senders of do: and the senders of x
or
returning all the sender of do: and x

It returns methods which sent #do: or #x
 


Stef


Reply | Threaded
Open this post in threaded view
|

Re: Calypso question

Denis Kudriashov
In reply to this post by Stephane Ducasse-3
And give me the link to the chapter

2017-09-22 20:41 GMT+02:00 Stephane Ducasse <[hidden email]>:
Hi denis

I'm doing a pass on the architecture of calypso chapter :) as a way to
force me to understand it better.

Now I do not understand why the following does not work.

| env classScope |
env := ClySystemNavigationEnvironment currentImage.
classScope := env selectScope: ClyClassScope of: {Point. Collection}.
classScope allClasses


another question

packageScope query: (ClyMessageSenders of: #(do: x))

It is returning all the senders of do: and the senders of x
or
returning all the sender of do: and x


Stef


Reply | Threaded
Open this post in threaded view
|

Re: Calypso question

Stephane Ducasse-3
In reply to this post by Denis Kudriashov
Ok what is localClassScope?

so may be we should rename it anyOf:

On Fri, Sep 22, 2017 at 9:54 PM, Denis Kudriashov <[hidden email]> wrote:

> Hi
>
> 2017-09-22 20:41 GMT+02:00 Stephane Ducasse <[hidden email]>:
>>
>> Hi denis
>>
>> I'm doing a pass on the architecture of calypso chapter :) as a way to
>> force me to understand it better.
>>
>> Now I do not understand why the following does not work.
>>
>> | env classScope |
>> env := ClySystemNavigationEnvironment currentImage.
>> classScope := env selectScope: ClyClassScope of: {Point. Collection}.
>> classScope allClasses
>>
>
> Probably it is not implemented. Each scope should implement what can be
> retrieved from it.
> If something was not needed for browser implementation then it will not
> work. (I not implemented it).
>
> But try also with ClyLocalClassScope. I did little refactoring and it can be
> not reflected in any doc/comment.
>
>>
>>
>> another question
>>
>> packageScope query: (ClyMessageSenders of: #(do: x))
>>
>> It is returning all the senders of do: and the senders of x
>> or
>> returning all the sender of do: and x
>
>
> It returns methods which sent #do: or #x
>
>>
>>
>>
>> Stef
>>
>

Reply | Threaded
Open this post in threaded view
|

Re: Calypso question

Stephane Ducasse-3
In reply to this post by Denis Kudriashov
Denis you should draw an UML of the classes and their responsibilities
because it is unclear to me what is ClyEnvironmentContent and how it
relates to ClyEnvironmentCursor

The project is Booklet-Infrastructure. I started to rewrite the
Calypso chapter.
Stef

On Fri, Sep 22, 2017 at 9:55 PM, Denis Kudriashov <[hidden email]> wrote:

> And give me the link to the chapter
>
> 2017-09-22 20:41 GMT+02:00 Stephane Ducasse <[hidden email]>:
>>
>> Hi denis
>>
>> I'm doing a pass on the architecture of calypso chapter :) as a way to
>> force me to understand it better.
>>
>> Now I do not understand why the following does not work.
>>
>> | env classScope |
>> env := ClySystemNavigationEnvironment currentImage.
>> classScope := env selectScope: ClyClassScope of: {Point. Collection}.
>> classScope allClasses
>>
>>
>> another question
>>
>> packageScope query: (ClyMessageSenders of: #(do: x))
>>
>> It is returning all the senders of do: and the senders of x
>> or
>> returning all the sender of do: and x
>>
>>
>> Stef
>>
>

Reply | Threaded
Open this post in threaded view
|

Re: Calypso question

Denis Kudriashov
In reply to this post by Stephane Ducasse-3
2017-09-23 7:54 GMT+02:00 Stephane Ducasse <[hidden email]>:
Ok what is localClassScope?

From LocalClassScope you will see only things which are defined in class itself.

There are also ClassHierarchyScope subclasses. They show you all things which are visible from related classes depending on what type of hierarchy they represent (there are ClySubclassScope, ClyInheritedTraitScope, etc).

I will add this notes to class comments. 

Before I introduced ClassHierarchyScope there was only ClassScope (with instance side and class side subclasses). Then I extract LocalClassScope.
 

so may be we should rename it anyOf:

I not understand it. 
 

On Fri, Sep 22, 2017 at 9:54 PM, Denis Kudriashov <[hidden email]> wrote:
> Hi
>
> 2017-09-22 20:41 GMT+02:00 Stephane Ducasse <[hidden email]>:
>>
>> Hi denis
>>
>> I'm doing a pass on the architecture of calypso chapter :) as a way to
>> force me to understand it better.
>>
>> Now I do not understand why the following does not work.
>>
>> | env classScope |
>> env := ClySystemNavigationEnvironment currentImage.
>> classScope := env selectScope: ClyClassScope of: {Point. Collection}.
>> classScope allClasses
>>
>
> Probably it is not implemented. Each scope should implement what can be
> retrieved from it.
> If something was not needed for browser implementation then it will not
> work. (I not implemented it).
>
> But try also with ClyLocalClassScope. I did little refactoring and it can be
> not reflected in any doc/comment.
>
>>
>>
>> another question
>>
>> packageScope query: (ClyMessageSenders of: #(do: x))
>>
>> It is returning all the senders of do: and the senders of x
>> or
>> returning all the sender of do: and x
>
>
> It returns methods which sent #do: or #x
>
>>
>>
>>
>> Stef
>>
>


Reply | Threaded
Open this post in threaded view
|

Re: Calypso question

Denis Kudriashov
In reply to this post by Stephane Ducasse-3

2017-09-23 8:00 GMT+02:00 Stephane Ducasse <[hidden email]>:
Denis you should draw an UML of the classes and their responsibilities

Sure.
I will made another pass on model when I will work on scoped refactoring. Then I can work on better docs. 
 
because it is unclear to me what is ClyEnvironmentContent and how it
relates to ClyEnvironmentCursor

The content is a query result. It is first class collection of result items. And the cursor is an iterator for it. 
Maybe it is a time for renames. When I started I thought about content classes differently. 
 

The project is Booklet-Infrastructure. I started to rewrite the
Calypso chapter.
Stef

On Fri, Sep 22, 2017 at 9:55 PM, Denis Kudriashov <[hidden email]> wrote:
> And give me the link to the chapter
>
> 2017-09-22 20:41 GMT+02:00 Stephane Ducasse <[hidden email]>:
>>
>> Hi denis
>>
>> I'm doing a pass on the architecture of calypso chapter :) as a way to
>> force me to understand it better.
>>
>> Now I do not understand why the following does not work.
>>
>> | env classScope |
>> env := ClySystemNavigationEnvironment currentImage.
>> classScope := env selectScope: ClyClassScope of: {Point. Collection}.
>> classScope allClasses
>>
>>
>> another question
>>
>> packageScope query: (ClyMessageSenders of: #(do: x))
>>
>> It is returning all the senders of do: and the senders of x
>> or
>> returning all the sender of do: and x
>>
>>
>> Stef
>>
>


Reply | Threaded
Open this post in threaded view
|

Re: Calypso question

Denis Kudriashov
In reply to this post by Denis Kudriashov


another question

packageScope query: (ClyMessageSenders of: #(do: x))

It is returning all the senders of do: and the senders of x
or
returning all the sender of do: and x

It returns methods which sent #do: or #x

This logic was needed to support "Senders button" when multiple methods are selected. I think it is expected behaviour in that case.
 
 


Stef



Reply | Threaded
Open this post in threaded view
|

Re: Calypso question

Stephane Ducasse-3
In reply to this post by Denis Kudriashov
anyOf: means
senders of any of the following message = or

because of: with a list could mean that you expect to find the senders
of all the message in the list.

Am I clear?

Stef


On Sat, Sep 23, 2017 at 10:37 AM, Denis Kudriashov <[hidden email]> wrote:

> 2017-09-23 7:54 GMT+02:00 Stephane Ducasse <[hidden email]>:
>>
>> Ok what is localClassScope?
>
>
> From LocalClassScope you will see only things which are defined in class
> itself.
>
> There are also ClassHierarchyScope subclasses. They show you all things
> which are visible from related classes depending on what type of hierarchy
> they represent (there are ClySubclassScope, ClyInheritedTraitScope, etc).
>
> I will add this notes to class comments.
>
> Before I introduced ClassHierarchyScope there was only ClassScope (with
> instance side and class side subclasses). Then I extract LocalClassScope.
>
>>
>>
>> so may be we should rename it anyOf:
>
>
> I not understand it.
>
>>
>>
>> On Fri, Sep 22, 2017 at 9:54 PM, Denis Kudriashov <[hidden email]>
>> wrote:
>> > Hi
>> >
>> > 2017-09-22 20:41 GMT+02:00 Stephane Ducasse <[hidden email]>:
>> >>
>> >> Hi denis
>> >>
>> >> I'm doing a pass on the architecture of calypso chapter :) as a way to
>> >> force me to understand it better.
>> >>
>> >> Now I do not understand why the following does not work.
>> >>
>> >> | env classScope |
>> >> env := ClySystemNavigationEnvironment currentImage.
>> >> classScope := env selectScope: ClyClassScope of: {Point. Collection}.
>> >> classScope allClasses
>> >>
>> >
>> > Probably it is not implemented. Each scope should implement what can be
>> > retrieved from it.
>> > If something was not needed for browser implementation then it will not
>> > work. (I not implemented it).
>> >
>> > But try also with ClyLocalClassScope. I did little refactoring and it
>> > can be
>> > not reflected in any doc/comment.
>> >
>> >>
>> >>
>> >> another question
>> >>
>> >> packageScope query: (ClyMessageSenders of: #(do: x))
>> >>
>> >> It is returning all the senders of do: and the senders of x
>> >> or
>> >> returning all the sender of do: and x
>> >
>> >
>> > It returns methods which sent #do: or #x
>> >
>> >>
>> >>
>> >>
>> >> Stef
>> >>
>> >
>>
>

Reply | Threaded
Open this post in threaded view
|

Re: Calypso question

Stephane Ducasse-3
In reply to this post by Denis Kudriashov
On Sat, Sep 23, 2017 at 10:56 AM, Denis Kudriashov <[hidden email]> wrote:

>
>>>
>>> another question
>>>
>>> packageScope query: (ClyMessageSenders of: #(do: x))
>>>
>>> It is returning all the senders of do: and the senders of x
>>> or
>>> returning all the sender of do: and x
>>
>>
>> It returns methods which sent #do: or #x
>
>
> This logic was needed to support "Senders button" when multiple methods are
> selected. I think it is expected behaviour in that case.

Yes but this is not when you read the code

packageScope query: (ClyMessageSenders of: #(do: x))


packageScope query: (ClyMessageSenders anyOf: #(do: x))

is much clearer because it means what it does.


stef

One day you should try to write documentation on something that you
should reverse engineer first and you will see.
Nothing is clear.


>
>>
>>
>>>
>>>
>>>
>>> Stef
>>>
>>
>

Reply | Threaded
Open this post in threaded view
|

Re: Calypso question

Stephane Ducasse-3
What is the relationship between a cursor and ClyEnvironmentContent
and ClyEnvironment?

On Sun, Sep 24, 2017 at 9:16 AM, Stephane Ducasse
<[hidden email]> wrote:

> On Sat, Sep 23, 2017 at 10:56 AM, Denis Kudriashov <[hidden email]> wrote:
>>
>>>>
>>>> another question
>>>>
>>>> packageScope query: (ClyMessageSenders of: #(do: x))
>>>>
>>>> It is returning all the senders of do: and the senders of x
>>>> or
>>>> returning all the sender of do: and x
>>>
>>>
>>> It returns methods which sent #do: or #x
>>
>>
>> This logic was needed to support "Senders button" when multiple methods are
>> selected. I think it is expected behaviour in that case.
>
> Yes but this is not when you read the code
>
> packageScope query: (ClyMessageSenders of: #(do: x))
>
>
> packageScope query: (ClyMessageSenders anyOf: #(do: x))
>
> is much clearer because it means what it does.
>
>
> stef
>
> One day you should try to write documentation on something that you
> should reverse engineer first and you will see.
> Nothing is clear.
>
>
>>
>>>
>>>
>>>>
>>>>
>>>>
>>>> Stef
>>>>
>>>
>>

Reply | Threaded
Open this post in threaded view
|

Re: Calypso question

Denis Kudriashov
In reply to this post by Stephane Ducasse-3

2017-09-24 9:15 GMT+02:00 Stephane Ducasse <[hidden email]>:
anyOf: means
senders of any of the following message = or

because of: with a list could mean that you expect to find the senders
of all the message in the list.

Am I clear?

Yes.
But is it good english to say "Senders anyOf: #(do: x)"? Should not it be "Senders ofAny: #(do x)"?
 

Stef


On Sat, Sep 23, 2017 at 10:37 AM, Denis Kudriashov <[hidden email]> wrote:
> 2017-09-23 7:54 GMT+02:00 Stephane Ducasse <[hidden email]>:
>>
>> Ok what is localClassScope?
>
>
> From LocalClassScope you will see only things which are defined in class
> itself.
>
> There are also ClassHierarchyScope subclasses. They show you all things
> which are visible from related classes depending on what type of hierarchy
> they represent (there are ClySubclassScope, ClyInheritedTraitScope, etc).
>
> I will add this notes to class comments.
>
> Before I introduced ClassHierarchyScope there was only ClassScope (with
> instance side and class side subclasses). Then I extract LocalClassScope.
>
>>
>>
>> so may be we should rename it anyOf:
>
>
> I not understand it.
>
>>
>>
>> On Fri, Sep 22, 2017 at 9:54 PM, Denis Kudriashov <[hidden email]>
>> wrote:
>> > Hi
>> >
>> > 2017-09-22 20:41 GMT+02:00 Stephane Ducasse <[hidden email]>:
>> >>
>> >> Hi denis
>> >>
>> >> I'm doing a pass on the architecture of calypso chapter :) as a way to
>> >> force me to understand it better.
>> >>
>> >> Now I do not understand why the following does not work.
>> >>
>> >> | env classScope |
>> >> env := ClySystemNavigationEnvironment currentImage.
>> >> classScope := env selectScope: ClyClassScope of: {Point. Collection}.
>> >> classScope allClasses
>> >>
>> >
>> > Probably it is not implemented. Each scope should implement what can be
>> > retrieved from it.
>> > If something was not needed for browser implementation then it will not
>> > work. (I not implemented it).
>> >
>> > But try also with ClyLocalClassScope. I did little refactoring and it
>> > can be
>> > not reflected in any doc/comment.
>> >
>> >>
>> >>
>> >> another question
>> >>
>> >> packageScope query: (ClyMessageSenders of: #(do: x))
>> >>
>> >> It is returning all the senders of do: and the senders of x
>> >> or
>> >> returning all the sender of do: and x
>> >
>> >
>> > It returns methods which sent #do: or #x
>> >
>> >>
>> >>
>> >>
>> >> Stef
>> >>
>> >
>>
>


Reply | Threaded
Open this post in threaded view
|

Re: Calypso question

Denis Kudriashov
In reply to this post by Stephane Ducasse-3

2017-09-24 9:30 GMT+02:00 Stephane Ducasse <[hidden email]>:
What is the relationship between a cursor and ClyEnvironmentContent
and ClyEnvironment?

If you are asking about ClyNavigationEnvironment then it is kind of facade to query the system. It is responsible to select specific scope of environment. And it maintains cache for them.

scope := ClySystemNavigationEnvironment selectScope: ClyPackageScope of: {Object package}
 
Concrete kind of environment represents concrete kind of system. ClySystemNavigationEnvironment represents general Pharo system. 

With scope you evaluate queries:

cursor := scope query: (ClyMessageSenders of: #(do:)_.

And cursor provides enumeration interface to items of query result where result itself is an instance of concrete type of ClyEnvironmentContent.

So cache of ClyNavigationEnvironment has multiple scopes. Every scope instance has cache of multiple ClyEnvironmentContent instances.
Each content knows in what scope it was built and what environment it represents (and also what query built it).
Cursor instance references single environment content instance. You can have multiple cursors which point to same environment content instance. 

Is it clear?


On Sun, Sep 24, 2017 at 9:16 AM, Stephane Ducasse
<[hidden email]> wrote:
> On Sat, Sep 23, 2017 at 10:56 AM, Denis Kudriashov <[hidden email]> wrote:
>>
>>>>
>>>> another question
>>>>
>>>> packageScope query: (ClyMessageSenders of: #(do: x))
>>>>
>>>> It is returning all the senders of do: and the senders of x
>>>> or
>>>> returning all the sender of do: and x
>>>
>>>
>>> It returns methods which sent #do: or #x
>>
>>
>> This logic was needed to support "Senders button" when multiple methods are
>> selected. I think it is expected behaviour in that case.
>
> Yes but this is not when you read the code
>
> packageScope query: (ClyMessageSenders of: #(do: x))
>
>
> packageScope query: (ClyMessageSenders anyOf: #(do: x))
>
> is much clearer because it means what it does.
>
>
> stef
>
> One day you should try to write documentation on something that you
> should reverse engineer first and you will see.
> Nothing is clear.
>
>
>>
>>>
>>>
>>>>
>>>>
>>>>
>>>> Stef
>>>>
>>>
>>


Reply | Threaded
Open this post in threaded view
|

Re: Calypso question

Ben Coman
In reply to this post by Denis Kudriashov


On Mon, Sep 25, 2017 at 3:58 PM, Denis Kudriashov <[hidden email]> wrote:

2017-09-24 9:15 GMT+02:00 Stephane Ducasse <[hidden email]>:
anyOf: means
senders of any of the following message = or

because of: with a list could mean that you expect to find the senders
of all the message in the list.

Am I clear?

Yes.
But is it good english to say "Senders anyOf: #(do: x)"? Should not it be "Senders ofAny: #(do x)"?

The second sounds more natural.
cheers -ben
 
 

Stef


On Sat, Sep 23, 2017 at 10:37 AM, Denis Kudriashov <[hidden email]> wrote:
> 2017-09-23 7:54 GMT+02:00 Stephane Ducasse <[hidden email]>:
>>
>> Ok what is localClassScope?
>
>
> From LocalClassScope you will see only things which are defined in class
> itself.
>
> There are also ClassHierarchyScope subclasses. They show you all things
> which are visible from related classes depending on what type of hierarchy
> they represent (there are ClySubclassScope, ClyInheritedTraitScope, etc).
>
> I will add this notes to class comments.
>
> Before I introduced ClassHierarchyScope there was only ClassScope (with
> instance side and class side subclasses). Then I extract LocalClassScope.
>
>>
>>
>> so may be we should rename it anyOf:
>
>
> I not understand it.
>
>>
>>
>> On Fri, Sep 22, 2017 at 9:54 PM, Denis Kudriashov <[hidden email]>
>> wrote:
>> > Hi
>> >
>> > 2017-09-22 20:41 GMT+02:00 Stephane Ducasse <[hidden email]>:
>> >>
>> >> Hi denis
>> >>
>> >> I'm doing a pass on the architecture of calypso chapter :) as a way to
>> >> force me to understand it better.
>> >>
>> >> Now I do not understand why the following does not work.
>> >>
>> >> | env classScope |
>> >> env := ClySystemNavigationEnvironment currentImage.
>> >> classScope := env selectScope: ClyClassScope of: {Point. Collection}.
>> >> classScope allClasses
>> >>
>> >
>> > Probably it is not implemented. Each scope should implement what can be
>> > retrieved from it.
>> > If something was not needed for browser implementation then it will not
>> > work. (I not implemented it).
>> >
>> > But try also with ClyLocalClassScope. I did little refactoring and it
>> > can be
>> > not reflected in any doc/comment.
>> >
>> >>
>> >>
>> >> another question
>> >>
>> >> packageScope query: (ClyMessageSenders of: #(do: x))
>> >>
>> >> It is returning all the senders of do: and the senders of x
>> >> or
>> >> returning all the sender of do: and x
>> >
>> >
>> > It returns methods which sent #do: or #x
>> >
>> >>
>> >>
>> >>
>> >> Stef
>> >>
>> >
>>
>