[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
15/22: gnu: Add cl-mw-equiv.
From: |
guix-commits |
Subject: |
15/22: gnu: Add cl-mw-equiv. |
Date: |
Wed, 3 Aug 2022 10:48:10 -0400 (EDT) |
glv pushed a commit to branch master
in repository guix.
commit bcb33357162ccd7423c6355ec48f43e35b90fbf8
Author: Pierre Neidhardt <mail@ambrevar.xyz>
AuthorDate: Mon Jul 4 21:09:52 2022 +0200
gnu: Add cl-mw-equiv.
* gnu/packages/lisp-xyz.scm (cl-mw-equiv, ecl-mw-equiv, sbcl-mw-equiv): New
variables.
Signed-off-by: Guillaume Le Vaillant <glv@posteo.net>
---
gnu/packages/lisp-xyz.scm | 52 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 52 insertions(+)
diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm
index 946b68cdf1..3305e36d02 100644
--- a/gnu/packages/lisp-xyz.scm
+++ b/gnu/packages/lisp-xyz.scm
@@ -10947,6 +10947,58 @@ accompaniment to the standard ANSI facilities.")
(define-public ecl-clx-xembed
(sbcl-package->ecl-package sbcl-clx-xembed))
+(define-public sbcl-mw-equiv
+ (let ((commit "3ae871458685b1ef7cd6a996ee22c8c5e738a03d")
+ (revision "1"))
+ (package
+ (name "sbcl-mw-equiv")
+ (version (git-version "0.1.2" revision commit))
+ (home-page "https://github.com/sharplispers/mw-equiv/")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/sharplispers/mw-equiv/")
+ (commit commit)))
+ (file-name (git-file-name "cl-mw-equiv" version))
+ (sha256
+ (base32 "1fl90wp0jp7l90mps53fq0kzb28f10qfr739527h03xwqccyylad"))))
+ (build-system asdf-build-system/sbcl)
+ (synopsis "Extensible object equivalence protocol for Common Lisp")
+ (description "Common Lisp comes with quite some functions to compare
+objects for equality, yet none is applicable in every situation and in general
+this is hard, as equality of objects depends on the semantics of operations on
+them. As consequence, users find themselves regularly in a situation where
+they have to roll their own specialized equality test.
+
+This module provides one of many possible equivalence relations between
+standard Common Lisp objects. However, it can be extended for new objects
+through a simple CLOS protocol. The rules when two objects are considered
+equivalent distinguish between @emph{mutating} and @emph{frozen objects}. A
+frozen object is promised not to be mutated in the future in a way that
+operations on it can notice the difference.
+
+We have chosen to compare mutating objects only for identity (pointer
+equality), to avoid various problems. Equivalence for frozen objects on the
+other hand is established by recursing on the objects' constituent parts and
+checking their equivalence. Hence, two objects are equivalent under the
+@code{OBJECT=} relation, if they are either identical, or if they are frozen
+and structurally equivalent, i.e. their constituents are point-wise
+equivalent.
+
+Since many objects are potentially mutable, but are not necessarily mutated
+from a certain point in their life time on, it is possible to promise to the
+equivalence relation that they remain frozen for the rest of their life time,
+thus enabling coarser equivalence than the often too fine-grained pointer
+equality.")
+ (license license:bsd-2))))
+
+(define-public cl-mw-equiv
+ (sbcl-package->cl-source-package sbcl-mw-equiv))
+
+(define-public ecl-mw-equiv
+ (sbcl-package->ecl-package sbcl-mw-equiv))
+
(define-public sbcl-quantile-estimator
(package
(name "sbcl-quantile-estimator")
- branch master updated (c4e58c119d -> 18f1befba3), guix-commits, 2022/08/03
- 04/22: gnu: Remove obsolete references to asd-files and test-asd-file., guix-commits, 2022/08/03
- 14/22: gnu: sbcl-hdf5-cffi: Enable tests., guix-commits, 2022/08/03
- 03/22: gnu: sbcl-cl-gamepad: Remove asdf:compile-system workaround., guix-commits, 2022/08/03
- 05/22: gnu: sbcl-quri: Remove obsolete test workaround., guix-commits, 2022/08/03
- 08/22: gnu: sbcl-jonathan: Fix tests., guix-commits, 2022/08/03
- 13/22: gnu: sbcl-vas-string-metrics: Re-enable tests., guix-commits, 2022/08/03
- 12/22: gnu: sbcl-cl-heap: Re-enable tests., guix-commits, 2022/08/03
- 15/22: gnu: Add cl-mw-equiv.,
guix-commits <=
- 16/22: gnu: sbcl-quantile-estimator: Enable tests., guix-commits, 2022/08/03
- 02/22: build-system: asdf: Let ASDF locate the .asd files., guix-commits, 2022/08/03
- 10/22: gnu: sbcl-spatial-trees: Build spatial-trees.nss and fix tests., guix-commits, 2022/08/03
- 06/22: gnu: sbcl-cl-reexport: Remove obsolete test workaround., guix-commits, 2022/08/03
- 11/22: gnu: sbcl-lisp-namespace: Enable tests., guix-commits, 2022/08/03
- 07/22: gnu: Add cl-legion., guix-commits, 2022/08/03
- 17/22: gnu: sbcl-cl-online-learning: Remove unnecessary arguments., guix-commits, 2022/08/03
- 18/22: gnu: sbcl-jzon: Enable tests., guix-commits, 2022/08/03
- 21/22: gnu: sbcl-glop: Remove obsolete test-asd-file parameter., guix-commits, 2022/08/03
- 20/22: gnu: sbcl-stumpwm-kbd-layouts: Fix build., guix-commits, 2022/08/03