-
Notifications
You must be signed in to change notification settings - Fork 247
Cleaning up the various hierarchies #876
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Is In any case, about Furthermore, when I see In other words, I prefer the current naming scheme. |
Metric space theory for standard library? |
Well a little bit of it. The basic metric hierarchy at least (which has proven deceptively difficult to get right). |
Packages are the name the library gives to the structures that hide all their components, i.e.
Okay, great! |
A metric is a map of type X -> RealNumberField satisfying certain properties. |
No need for the codomain of the function to be the reals. Any totally ordered set with a bottom element will do. Indeed part of the challenge has been to come up with a design that is easy to generalise to a specific codomain. |
I suggest to use The motivation is as follows.
|
@andreasabel wrote:
The packages refer to the record types that hide all their components:
whereas "structures" refer to those that expose their components:
The name "packages" was already being used before I took over, and I just continued to use it. I always imagined that it just referred to them being all "packaged up". I'm not wedded to it particular. If the community can come up with an alternative name for them then it wouldn't be a problem to adopt it. We should do it before the next release though, as I'm just introducing the first modules named "Packages". |
We've started to use "bundled" instead. See the paper accepted to GPCE A Language Feature to Unbundle Data at Will, with the full prototype having its own web site documenting our ideas. The current prototype is implemented in emacs Lisp, but that's a playground for ideas meant to be eventually implemented without meta-programming. |
Hmm so |
I favor "bundle" over "package" since "bundle" does not have a strong connotation. A package is usually a "big" organizational structure (collection of modules). |
Closing as now completed, thanks to everyone for their input! |
…les with arguments or creating module aliases (related to agda issue 1646) which can be worked around with 'call-site' argument passing. Initial implementation for generic _⁻¹
Having just re-defined the function hierarchy, and as I'm just about to contribute a hierarchy for metric spaces under
Function.Metric
, I'm keen to standardise the files involved in each hierarchy. Currently we have:Function.Core
Function.Definitions
Function.Structures
Function.Packages
Function
(empty, but re-exports all of the above)Algebra.FunctionProperties.Core
Algebra.FunctionProperties
(re-exports the above)Algebra.Structures
Algebra
Relation.Binary.Core
Relation.Binary
(full, and re-exports all of the above)To straighten this out I propose that every hierarchy
X
should have the following filesX.Core
- contains very basic definitions, e.g.Op
,Op₂
,Rel
,REL
,Fun
as well as basic combinators if applicable (e.g. function composition)X.Definitions
- contains named properties, e.g.Transitive
,Commutative
,Injective
X.Structures
- self-explanatoryX.Packages
- self-explanatoryX
which publicly re-exports all of the above, parameterised by equality relations if applicable.As the proposed top-level
X
module re-exports the contents of the previous modules, this should be doable in an entirely backwards compatible manner.The only reservation I have is perhaps the name
Definitions
. I'd definitely preferProperties
but that name is already reserved for a certain class of files. Anyone have any thoughts?The text was updated successfully, but these errors were encountered: