Following from Philip's 3rd point, which I think is very relevant, I 
surmise that I really should:
1) build libraries ;that reference my code (These libraries are built 
within a user-defined package.)
2) Then my initial question, refined, becomes:
Can a new user defined library encompass nothing more than references to 
previous user defined libraries? (I think the answer is: yes).
3) Since the library is said to be referenced through their 
collection-based paths this leads me to wonder:
Am I expected to create my own pathed-collection that gives my code 
independence from the default installled racket pathed-collections?

Then am I to use: (current-library-collection-links paths) to link my 
collection into the racket system?

I would then expect (current-library-collection-paths) to return the 2 
default racket v. 8.1 collection-paths, and my own collection-path.

On Sunday, June 6, 2021 at 7:23:15 PM UTC-6 Philip McGrath wrote:

> On Sun, Jun 6, 2021 at 7:59 PM Ben Greenman <[email protected]> wrote:
>
>> On 6/6/21, Don Green <[email protected]> wrote:
>> >
>> > Can a new user defined pkg encompass nothing more than references to
>> > previously defined pkgs so that every  user created module references a
>> > single user defined pkg?
>>
>> Yes. You can make a new package whose main.rkt provides lots of
>> identifiers from other packages.
>
>
> I can see at least three different interpretations of the question. In an 
> attempt to clear up any possible misunderstandings, let me try to pull them 
> apart:
>
>    1. Ben's answer is correct if the question really meant, "so that 
>    every user created module references a single user defined" *module*. 
>    The omnibus module (`#lang reprovide` is a good choice) may be in the same 
>    package as other user-defined modules that use it, or additional packages 
>    may depend on the package containing the omnibus module.
>    2. If the question instead meant, "so that every user created" 
>    *package* "references a single user defined pkg", the answer is also 
>    yes, but in a different way. A good example of this would be the 
>    "typed-racket" package, which combines the packages "typed-racket-lib" and 
>    "typed-racket-doc". The "typed-racket" consists simply of an "info.rkt" 
>    file with appropriate definitions for `deps` and `implies`.
>    3. On the other hand, if the question literally meant, "so that every 
>    user created module references a single user defined pkg", then the 
> answer, 
>    strictly speaking, is no, because modules can not refer to packages per se.
>
> The third possibility is where I see the most potential for 
> misunderstanding. From Package Management in Racket", § 1.1 "What is a 
> Package?" <
> https://docs.racket-lang.org/pkg/getting-started.html#%28part._.What_is_a_.Package_%29
> >:
>
>> A package 
>> <https://docs.racket-lang.org/pkg/Package_Concepts.html#%28tech._package%29> 
>> is not something that you refer to directly in your Racket programs. 
>> Instead, a package 
>> <https://docs.racket-lang.org/pkg/Package_Concepts.html#%28tech._package%29> 
>> is a set of libraries that fit into the collection 
>> <https://docs.racket-lang.org/reference/collects.html#%28tech._collection%29>
>>  
>> hierarchy, and you refer to libraries through their collection 
>> <https://docs.racket-lang.org/reference/collects.html#%28tech._collection%29>-based
>>  
>> paths. Libraries that are close in the hierarchy may be provided by 
>> different packages, while a single package may provide libraries that are 
>> far from each other in the hierarchy (but that are conceptually related, 
>> somehow).
>>
>> Racket documentation tells you which package provides a given library. 
>> For example, the documentation for the pict/face 
>> <https://docs.racket-lang.org/pict/More_Pict_Constructors.html#%28mod-path._pict%2Fface%29>
>>  
>> library says that it is provided by the pict-lib package.If you’re 
>> reading this in a web browser, click pict/face 
>> <https://docs.racket-lang.org/pict/More_Pict_Constructors.html#%28mod-path._pict%2Fface%29>
>>  
>> to go straight to its documentation.
>>
>> Over time, packages may be refactored so that a library moves to a 
>> different package, but the original package should continue to provide the 
>> library, too, by declaring a dependency on the new package. More generally, 
>> a package is intended to have an interface that only grows in terms of 
>> libraries, bindings, and functionality, which provides a basic level of 
>> backward compatibility. Incompatible changes should be implemented in a new 
>> package.
>>
>
> -Philip
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/02264bb7-27c0-4f79-9ad4-75626c3b4b7an%40googlegroups.com.

Reply via email to