Skip to content

Commit 7c0b715

Browse files
author
Elviro Rocca
committed
Remove FreeCommutativeMonoid and FreeSemiring (needs more research)
1 parent f432e97 commit 7c0b715

File tree

10 files changed

+16
-172
lines changed

10 files changed

+16
-172
lines changed

Abstract.xcodeproj/project.pbxproj

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -165,10 +165,6 @@
165165
381257492080935A00CD625D /* FreeMonoid.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381257472080935A00CD625D /* FreeMonoid.swift */; };
166166
3812574A2080935A00CD625D /* FreeMonoid.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381257472080935A00CD625D /* FreeMonoid.swift */; };
167167
3812574B2080935A00CD625D /* FreeMonoid.swift in Sources */ = {isa = PBXBuildFile; fileRef = 381257472080935A00CD625D /* FreeMonoid.swift */; };
168-
3812574D2080952B00CD625D /* FreeCommutativeMonoid.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3812574C2080952B00CD625D /* FreeCommutativeMonoid.swift */; };
169-
3812574E2080952B00CD625D /* FreeCommutativeMonoid.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3812574C2080952B00CD625D /* FreeCommutativeMonoid.swift */; };
170-
3812574F2080952B00CD625D /* FreeCommutativeMonoid.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3812574C2080952B00CD625D /* FreeCommutativeMonoid.swift */; };
171-
381257502080952B00CD625D /* FreeCommutativeMonoid.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3812574C2080952B00CD625D /* FreeCommutativeMonoid.swift */; };
172168
3833AC7420161FD600CE907E /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3833AC7320161FD600CE907E /* Operators.swift */; };
173169
3833AC7520161FD600CE907E /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3833AC7320161FD600CE907E /* Operators.swift */; };
174170
3833AC7620161FD600CE907E /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3833AC7320161FD600CE907E /* Operators.swift */; };
@@ -181,10 +177,6 @@
181177
38A14E501F2A2DAB00A2900C /* SwiftCheck.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 0951F2421F09690200EA362C /* SwiftCheck.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
182178
38A14E521F2A2DC300A2900C /* SwiftCheck.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 0951F2441F09690200EA362C /* SwiftCheck.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
183179
38A14E531F2A2DCB00A2900C /* SwiftCheck.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0951F2441F09690200EA362C /* SwiftCheck.framework */; };
184-
38DFE65F208260B800489BDF /* FreeSemiring.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38DFE65E208260B800489BDF /* FreeSemiring.swift */; };
185-
38DFE660208260B800489BDF /* FreeSemiring.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38DFE65E208260B800489BDF /* FreeSemiring.swift */; };
186-
38DFE661208260B800489BDF /* FreeSemiring.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38DFE65E208260B800489BDF /* FreeSemiring.swift */; };
187-
38DFE662208260B800489BDF /* FreeSemiring.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38DFE65E208260B800489BDF /* FreeSemiring.swift */; };
188180
38DFE66420826CBB00489BDF /* FunctionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38DFE66320826CBB00489BDF /* FunctionTests.swift */; };
189181
38DFE66520826CBB00489BDF /* FunctionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38DFE66320826CBB00489BDF /* FunctionTests.swift */; };
190182
38DFE66620826CBB00489BDF /* FunctionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38DFE66320826CBB00489BDF /* FunctionTests.swift */; };
@@ -283,7 +275,6 @@
283275
3812573C20808ECD00CD625D /* Bool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Bool.swift; sourceTree = "<group>"; };
284276
3812574120808EE200CD625D /* Tropical.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tropical.swift; sourceTree = "<group>"; };
285277
381257472080935A00CD625D /* FreeMonoid.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FreeMonoid.swift; sourceTree = "<group>"; };
286-
3812574C2080952B00CD625D /* FreeCommutativeMonoid.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FreeCommutativeMonoid.swift; sourceTree = "<group>"; };
287278
3833AC7320161FD600CE907E /* Operators.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Operators.swift; path = Carthage/Checkouts/Operadics/Sources/Operadics/Operators.swift; sourceTree = SOURCE_ROOT; };
288279
3833AC7920163E5F00CE907E /* WrapperEquatable.generated.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WrapperEquatable.generated.swift; sourceTree = "<group>"; };
289280
3853BF9D1EF11D7400791099 /* Wrapper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Wrapper.swift; sourceTree = "<group>"; };
@@ -309,7 +300,6 @@
309300
38D737E11EE9A761000BAF0C /* InfoTests.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = InfoTests.plist; sourceTree = "<group>"; };
310301
38D737E91EE9B86F000BAF0C /* Semigroup.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Semigroup.swift; sourceTree = "<group>"; };
311302
38D737EB1EE9B95C000BAF0C /* Law.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Law.swift; sourceTree = "<group>"; };
312-
38DFE65E208260B800489BDF /* FreeSemiring.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FreeSemiring.swift; sourceTree = "<group>"; };
313303
38DFE66320826CBB00489BDF /* FunctionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = FunctionTests.swift; path = Tests/AbstractTests/FunctionTests.swift; sourceTree = SOURCE_ROOT; };
314304
/* End PBXFileReference section */
315305

@@ -428,8 +418,6 @@
428418
children = (
429419
381256EB20807B3000CD625D /* FreeSemigroup.swift */,
430420
381257472080935A00CD625D /* FreeMonoid.swift */,
431-
3812574C2080952B00CD625D /* FreeCommutativeMonoid.swift */,
432-
38DFE65E208260B800489BDF /* FreeSemiring.swift */,
433421
);
434422
path = Free;
435423
sourceTree = "<group>";
@@ -845,7 +833,6 @@
845833
0950FEF11EFC5C7900513DF7 /* Isomorphism.swift in Sources */,
846834
0950FEF21EFC5C7900513DF7 /* Magma.swift in Sources */,
847835
0950FEF31EFC5C7900513DF7 /* Wrapper.swift in Sources */,
848-
3812574E2080952B00CD625D /* FreeCommutativeMonoid.swift in Sources */,
849836
381257242080837600CD625D /* Ordering.swift in Sources */,
850837
381257492080935A00CD625D /* FreeMonoid.swift in Sources */,
851838
381256F720807C3500CD625D /* Multiply.swift in Sources */,
@@ -856,7 +843,6 @@
856843
3812570120807E1F00CD625D /* Min.swift in Sources */,
857844
0950FEF41EFC5C7900513DF7 /* BoundedSemilattice.swift in Sources */,
858845
381256FC20807D7B00CD625D /* Max.swift in Sources */,
859-
38DFE660208260B800489BDF /* FreeSemiring.swift in Sources */,
860846
3812570B20807F2600CD625D /* Or.swift in Sources */,
861847
3812571020807FB500CD625D /* First.swift in Sources */,
862848
381256F220807B8500CD625D /* Add.swift in Sources */,
@@ -906,7 +892,6 @@
906892
0950FF351F09488B00513DF7 /* Isomorphism.swift in Sources */,
907893
0950FF361F09488B00513DF7 /* Law.swift in Sources */,
908894
0950FF371F09488B00513DF7 /* Magma.swift in Sources */,
909-
3812574F2080952B00CD625D /* FreeCommutativeMonoid.swift in Sources */,
910895
381257252080837600CD625D /* Ordering.swift in Sources */,
911896
3812574A2080935A00CD625D /* FreeMonoid.swift in Sources */,
912897
381256F820807C3500CD625D /* Multiply.swift in Sources */,
@@ -917,7 +902,6 @@
917902
3812570220807E1F00CD625D /* Min.swift in Sources */,
918903
0950FF381F09488B00513DF7 /* Monoid.swift in Sources */,
919904
381256FD20807D7B00CD625D /* Max.swift in Sources */,
920-
38DFE661208260B800489BDF /* FreeSemiring.swift in Sources */,
921905
3812570C20807F2600CD625D /* Or.swift in Sources */,
922906
3812571120807FB500CD625D /* First.swift in Sources */,
923907
381256F320807B8500CD625D /* Add.swift in Sources */,
@@ -967,7 +951,6 @@
967951
0950FF521F094A2C00513DF7 /* Isomorphism.swift in Sources */,
968952
0950FF531F094A2C00513DF7 /* Law.swift in Sources */,
969953
0950FF541F094A2C00513DF7 /* Magma.swift in Sources */,
970-
381257502080952B00CD625D /* FreeCommutativeMonoid.swift in Sources */,
971954
381257262080837600CD625D /* Ordering.swift in Sources */,
972955
3812574B2080935A00CD625D /* FreeMonoid.swift in Sources */,
973956
381256F920807C3500CD625D /* Multiply.swift in Sources */,
@@ -978,7 +961,6 @@
978961
3812570320807E1F00CD625D /* Min.swift in Sources */,
979962
0950FF551F094A2C00513DF7 /* Monoid.swift in Sources */,
980963
381256FE20807D7B00CD625D /* Max.swift in Sources */,
981-
38DFE662208260B800489BDF /* FreeSemiring.swift in Sources */,
982964
3812570D20807F2600CD625D /* Or.swift in Sources */,
983965
3812571220807FB500CD625D /* First.swift in Sources */,
984966
381256F420807B8500CD625D /* Add.swift in Sources */,
@@ -1011,7 +993,6 @@
1011993
0950FF7C1F094AA100513DF7 /* Isomorphism.swift in Sources */,
1012994
0950FF7D1F094AA100513DF7 /* Law.swift in Sources */,
1013995
0950FF7E1F094AA100513DF7 /* Magma.swift in Sources */,
1014-
3812574D2080952B00CD625D /* FreeCommutativeMonoid.swift in Sources */,
1015996
381257232080837600CD625D /* Ordering.swift in Sources */,
1016997
381257482080935A00CD625D /* FreeMonoid.swift in Sources */,
1017998
381256F620807C3500CD625D /* Multiply.swift in Sources */,
@@ -1022,7 +1003,6 @@
10221003
3812570020807E1F00CD625D /* Min.swift in Sources */,
10231004
0950FF7F1F094AA100513DF7 /* Monoid.swift in Sources */,
10241005
381256FB20807D7B00CD625D /* Max.swift in Sources */,
1025-
38DFE65F208260B800489BDF /* FreeSemiring.swift in Sources */,
10261006
3812570A20807F2600CD625D /* Or.swift in Sources */,
10271007
3812570F20807FB500CD625D /* First.swift in Sources */,
10281008
381256F120807B8500CD625D /* Add.swift in Sources */,

Sources/Abstract/Free/FreeCommutativeMonoid.swift

Lines changed: 0 additions & 36 deletions
This file was deleted.

Sources/Abstract/Free/FreeSemigroup.swift

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,31 @@
33
#endif
44

55
// sourcery: fixedTypesForPropertyBasedTests = "Int"
6-
public struct FreeSemigroup<A>: Wrapper, Semigroup {
7-
public typealias WrappedType = Array<A>
8-
6+
public struct FreeSemigroup<A>: Semigroup {
97
public let unwrap: Array<A>
10-
public init(_ value: Array<A>) {
11-
self.unwrap = value
8+
private init(unwrap: Array<A>) {
9+
self.unwrap = unwrap
1210
}
1311

14-
public init(unwrap: Array<A>) {
15-
self.init(unwrap)
12+
public init(_ value: A) {
13+
self.unwrap = [value]
1614
}
1715

1816
public static func <> (lhs: FreeSemigroup, rhs: FreeSemigroup) -> FreeSemigroup {
19-
return FreeSemigroup(lhs.unwrap + rhs.unwrap)
17+
return FreeSemigroup(unwrap: lhs.unwrap + rhs.unwrap)
2018
}
2119
}
2220

23-
extension FreeSemigroup: Equatable where A: Equatable {}
21+
extension FreeSemigroup: Equatable where A: Equatable {
22+
public static func == (lhs: FreeSemigroup, rhs: FreeSemigroup) -> Bool {
23+
return lhs.unwrap == rhs.unwrap
24+
}
25+
}
2426

2527
extension FreeSemigroup: EquatableInContext where A: EquatableInContext {
2628
public typealias Context = A.Context
29+
30+
public static func == (lhs: FreeSemigroup, rhs: FreeSemigroup) -> (Context) -> Bool {
31+
return lhs.unwrap == rhs.unwrap
32+
}
2733
}

Sources/Abstract/Free/FreeSemiring.swift

Lines changed: 0 additions & 26 deletions
This file was deleted.

Tests/AbstractTests/CommutativeMonoidTests.generated.swift

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,6 @@ final class CommutativeMonoidTests: XCTestCase {
2020
}
2121
}
2222

23-
func testFreeCommutativeMonoid() {
24-
property("FreeCommutativeMonoid is a CommutativeMonoid") <- forAll { (a: FreeCommutativeMonoid<Int>, b: FreeCommutativeMonoid<Int>) in
25-
Law<FreeCommutativeMonoid<Int>>.isCommutative(a,b)
26-
}
27-
}
28-
2923
func testMax() {
3024
property("Max is a CommutativeMonoid") <- forAll { (a: Max<Int>, b: Max<Int>) in
3125
Law<Max<Int>>.isCommutative(a,b)
@@ -53,7 +47,6 @@ final class CommutativeMonoidTests: XCTestCase {
5347
static var allTests = [
5448
("testAdd",testAdd),
5549
("testAnd",testAnd),
56-
("testFreeCommutativeMonoid",testFreeCommutativeMonoid),
5750
("testMax",testMax),
5851
("testMin",testMin),
5952
("testMultiply",testMultiply),

Tests/AbstractTests/MonoidTests.generated.swift

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,6 @@ final class MonoidTests: XCTestCase {
3232
}
3333
}
3434

35-
func testFreeCommutativeMonoid() {
36-
property("FreeCommutativeMonoid is a Monoid") <- forAll { (a: FreeCommutativeMonoid<Int>) in
37-
Law<FreeCommutativeMonoid<Int>>.isNeutralToEmpty(a)
38-
}
39-
}
40-
4135
func testFreeMonoid() {
4236
property("FreeMonoid is a Monoid") <- forAll { (a: FreeMonoid<Int>) in
4337
Law<FreeMonoid<Int>>.isNeutralToEmpty(a)
@@ -97,7 +91,6 @@ final class MonoidTests: XCTestCase {
9791
("testAnd",testAnd),
9892
("testArray",testArray),
9993
("testEndofunction",testEndofunction),
100-
("testFreeCommutativeMonoid",testFreeCommutativeMonoid),
10194
("testFreeMonoid",testFreeMonoid),
10295
("testMax",testMax),
10396
("testMin",testMin),

Tests/AbstractTests/SemigroupTests.generated.swift

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,6 @@ final class SemigroupTests: XCTestCase {
3838
}
3939
}
4040

41-
func testFreeCommutativeMonoid() {
42-
property("FreeCommutativeMonoid is a Semigroup") <- forAll { (a: FreeCommutativeMonoid<Int>, b: FreeCommutativeMonoid<Int>, c: FreeCommutativeMonoid<Int>) in
43-
Law<FreeCommutativeMonoid<Int>>.isAssociative(a,b,c)
44-
}
45-
}
46-
4741
func testFreeMonoid() {
4842
property("FreeMonoid is a Semigroup") <- forAll { (a: FreeMonoid<Int>, b: FreeMonoid<Int>, c: FreeMonoid<Int>) in
4943
Law<FreeMonoid<Int>>.isAssociative(a,b,c)
@@ -116,7 +110,6 @@ final class SemigroupTests: XCTestCase {
116110
("testArray",testArray),
117111
("testEndofunction",testEndofunction),
118112
("testFirst",testFirst),
119-
("testFreeCommutativeMonoid",testFreeCommutativeMonoid),
120113
("testFreeMonoid",testFreeMonoid),
121114
("testFreeSemigroup",testFreeSemigroup),
122115
("testLast",testLast),

Tests/AbstractTests/SemiringTests.generated.swift

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,6 @@ final class SemiringTests: XCTestCase {
1818
}
1919
}
2020

21-
func testFreeSemiring() {
22-
property("FreeSemiring is a Semiring: Distributive") <- forAll { (a: FreeSemiring<Int>, b: FreeSemiring<Int>, c: FreeSemiring<Int>) in
23-
Law<FreeSemiring<Int>>.multiplicationIsDistributiveOverAddition(a,b,c)
24-
}
25-
26-
property("FreeSemiring is a Semiring: Annihilation") <- forAll { (a: FreeSemiring<Int>) in
27-
Law<FreeSemiring<Int>>.zeroAnnihiliatesTheMultiplicative(a)
28-
}
29-
}
30-
3121
func testTropical() {
3222
property("Tropical is a Semiring: Distributive") <- forAll { (a: Tropical<Int>, b: Tropical<Int>, c: Tropical<Int>) in
3323
Law<Tropical<Int>>.multiplicationIsDistributiveOverAddition(a,b,c)
@@ -40,7 +30,6 @@ final class SemiringTests: XCTestCase {
4030

4131
static var allTests = [
4232
("testBool",testBool),
43-
("testFreeSemiring",testFreeSemiring),
4433
("testTropical",testTropical),
4534
]
4635
}

Tests/AbstractTests/Utility/CustomArbitraryTypes.swift

Lines changed: 1 addition & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -129,17 +129,6 @@ extension Function: Arbitrary where A: CoArbitrary & Hashable, B: Arbitrary {
129129
}
130130
}
131131

132-
extension FreeCommutativeMonoid: Arbitrary where A: Arbitrary {
133-
public static var arbitrary: Gen<FreeCommutativeMonoid> {
134-
return Gen<FreeCommutativeMonoid>
135-
.compose {
136-
FreeCommutativeMonoid.init(
137-
unwrap: $0.generate(using: Array<A>.arbitrary)
138-
)
139-
}
140-
}
141-
}
142-
143132
extension FreeMonoid: Arbitrary where A: Arbitrary {
144133
public static var arbitrary: Gen<FreeMonoid> {
145134
return Gen<FreeMonoid>
@@ -153,22 +142,6 @@ extension FreeMonoid: Arbitrary where A: Arbitrary {
153142

154143
extension FreeSemigroup: Arbitrary where A: Arbitrary {
155144
public static var arbitrary: Gen<FreeSemigroup> {
156-
return Gen<FreeSemigroup>
157-
.compose {
158-
FreeSemigroup.init(
159-
unwrap: $0.generate(using: Array<A>.arbitrary)
160-
)
161-
}
162-
}
163-
}
164-
165-
extension FreeSemiring: Arbitrary where A: Arbitrary {
166-
public static var arbitrary: Gen<FreeSemiring> {
167-
return Gen<FreeSemiring>
168-
.compose {
169-
FreeSemiring.init(
170-
unwrap: $0.generate(using: Array<A>.arbitrary)
171-
)
172-
}
145+
return A.arbitrary.map(FreeSemigroup.init)
173146
}
174147
}

Tests/AbstractTests/WrapperTests.generated.swift

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -32,30 +32,12 @@ final class WrapperTests: XCTestCase {
3232
}
3333
}
3434

35-
func testFreeCommutativeMonoid() {
36-
property("FreeCommutativeMonoid is a well-behaved Wrapper") <- forAll { (a: FreeCommutativeMonoid<Int>) in
37-
Law<FreeCommutativeMonoid<Int>>.isWellBehavedWrapper(a)
38-
}
39-
}
40-
4135
func testFreeMonoid() {
4236
property("FreeMonoid is a well-behaved Wrapper") <- forAll { (a: FreeMonoid<Int>) in
4337
Law<FreeMonoid<Int>>.isWellBehavedWrapper(a)
4438
}
4539
}
4640

47-
func testFreeSemigroup() {
48-
property("FreeSemigroup is a well-behaved Wrapper") <- forAll { (a: FreeSemigroup<Int>) in
49-
Law<FreeSemigroup<Int>>.isWellBehavedWrapper(a)
50-
}
51-
}
52-
53-
func testFreeSemiring() {
54-
property("FreeSemiring is a well-behaved Wrapper") <- forAll { (a: FreeSemiring<Int>) in
55-
Law<FreeSemiring<Int>>.isWellBehavedWrapper(a)
56-
}
57-
}
58-
5941
func testLast() {
6042
property("Last is a well-behaved Wrapper") <- forAll { (a: Last<Int>) in
6143
Law<Last<Int>>.isWellBehavedWrapper(a)
@@ -103,10 +85,7 @@ final class WrapperTests: XCTestCase {
10385
("testAnd",testAnd),
10486
("testEndofunction",testEndofunction),
10587
("testFirst",testFirst),
106-
("testFreeCommutativeMonoid",testFreeCommutativeMonoid),
10788
("testFreeMonoid",testFreeMonoid),
108-
("testFreeSemigroup",testFreeSemigroup),
109-
("testFreeSemiring",testFreeSemiring),
11089
("testLast",testLast),
11190
("testMax",testMax),
11291
("testMin",testMin),

0 commit comments

Comments
 (0)