struct Add { sum: Logic, carry: Logic } comb halfadd ( a: Logic, b: Logic ) -> Add { Add{sum: a ^ b, carry: a & b} }