// @flow
export interface Semigroup {
concat(x: A, y: A): A
}
export function getProductSemigroup(asemigroup: Semigroup, bsemigroup: Semigroup): Semigroup<[A, B]> {
return {
concat([xa, xb], [ya, yb]) {
return [
asemigroup.concat(xa, ya),
bsemigroup.concat(xb, yb)
]
}
}
}