-
Notifications
You must be signed in to change notification settings - Fork 251
Open
Description
This is an offshoot of thinking about both #2252 and #1688 / #2254 (and perhaps requires precise resolution of the latter):
why, in eg. Data.Nat.Base
, do we write
-- Raw bundles
+-rawMagma : RawMagma 0ℓ 0ℓ
+-rawMagma = record
{ _≈_ = _≡_
; _∙_ = _+_
}
+-0-rawMonoid : RawMonoid 0ℓ 0ℓ
+-0-rawMonoid = record
{ _≈_ = _≡_
; _∙_ = _+_
; ε = 0
}
*-rawMagma : RawMagma 0ℓ 0ℓ
*-rawMagma = record
{ _≈_ = _≡_
; _∙_ = _*_
}
*-1-rawMonoid : RawMonoid 0ℓ 0ℓ
*-1-rawMonoid = record
{ _≈_ = _≡_
; _∙_ = _*_
; ε = 1
}
+-*-rawNearSemiring : RawNearSemiring 0ℓ 0ℓ
+-*-rawNearSemiring = record
{ Carrier = _
; _≈_ = _≡_
; _+_ = _+_
; _*_ = _*_
; 0# = 0
}
+-*-rawSemiring : RawSemiring 0ℓ 0ℓ
+-*-rawSemiring = record
{ Carrier = _
; _≈_ = _≡_
; _+_ = _+_
; _*_ = _*_
; 0# = 0
; 1# = 1
}
when it might be simpler/better/DRY to write instead:
+-*-rawSemiring : RawSemiring 0ℓ 0ℓ
+-*-rawSemiring = record
{ Carrier = _
; _≈_ = _≡_
; _+_ = _+_
; _*_ = _*_
; 0# = 0
; 1# = 1
}
open RawSemiring +-*-rawSemiring public
using ()
renaming ( +-rawMagma to +-rawMagma
; *-rawMagma to *-rawMagma
; +-rawMonoid to +-0-rawMonoid
; *-rawMonoid to *-1-rawMonoid
; rawNearSemiring to +-*-rawNearSemiring
)
Also (incidental historical glitch?): why do the first four bundles not need to specify the Carrier
, while the last two do? Or are they all, in fact, redundant?
UPDATED (following @MatthewDaggitt 's and @JacquesCarette 's comments below):
+-*-rawSemiring : RawSemiring 0ℓ 0ℓ
+-*-rawSemiring = record
{ _≈_ = _≡_
; _+_ = _+_
; _*_ = _*_
; 0# = 0
; 1# = 1
}
open RawSemiring +-*-rawSemiring public
using (+-rawMagma; *-rawMagma)
renaming ( +-rawMonoid to +-0-rawMonoid
; *-rawMonoid to *-1-rawMonoid
; rawNearSemiring to +-*-rawNearSemiring
)