import type { SemiringMin } from './Semiring'
import { Semiring } from './Semiring'
export interface Ring extends Semiring {
readonly sub_: (x: A, y: A) => A
readonly sub: (y: A) => (x: A) => A
}
export type RingMin = SemiringMin & {
readonly sub_: (x: A, y: A) => A
}
export function Ring(R: RingMin): Ring {
return {
...Semiring(R),
sub_: R.sub_,
sub: (y) => (x) => R.sub_(x, y)
}
}