1
0
mirror of https://github.com/IBM/fp-go.git synced 2025-08-10 22:31:32 +02:00

initial checkin

Signed-off-by: Dr. Carsten Leue <carsten.leue@de.ibm.com>
This commit is contained in:
Dr. Carsten Leue
2023-07-07 22:31:06 +02:00
parent 71c47ca560
commit c07df5c771
128 changed files with 5827 additions and 2 deletions

11
number/magma.go Normal file
View File

@@ -0,0 +1,11 @@
package number
import (
M "github.com/ibm/fp-go/magma"
)
func MagmaSub[A int | int8 | int16 | int32 | int64 | float32 | float64 | complex64 | complex128]() M.Magma[A] {
return M.MakeMagma(func(first A, second A) A {
return first - second
})
}

18
number/magma_test.go Normal file
View File

@@ -0,0 +1,18 @@
package number
import (
"testing"
"github.com/stretchr/testify/assert"
M "github.com/ibm/fp-go/magma"
)
func TestSemigroupIsMagma(t *testing.T) {
sum := SemigroupSum[int]()
var magma M.Magma[int] = sum
assert.Equal(t, sum.Concat(1, 2), magma.Concat(1, 2))
assert.Equal(t, sum.Concat(1, 2), sum.Concat(2, 1))
}

13
number/monoid.go Normal file
View File

@@ -0,0 +1,13 @@
package number
import (
M "github.com/ibm/fp-go/monoid"
)
func MonoidSum[A int | int8 | int16 | int32 | int64 | float32 | float64 | complex64 | complex128]() M.Monoid[A] {
s := SemigroupSum[A]()
return M.MakeMonoid(
s.Concat,
0,
)
}

11
number/monoid_test.go Normal file
View File

@@ -0,0 +1,11 @@
package number
import (
"testing"
M "github.com/ibm/fp-go/monoid/testing"
)
func TestMonoidSum(t *testing.T) {
M.AssertLaws(t, MonoidSum[int]())([]int{0, 1, 1000, -1})
}

11
number/semigroup.go Normal file
View File

@@ -0,0 +1,11 @@
package number
import (
S "github.com/ibm/fp-go/semigroup"
)
func SemigroupSum[A int | int8 | int16 | int32 | int64 | float32 | float64 | complex64 | complex128]() S.Semigroup[A] {
return S.MakeSemigroup(func(first A, second A) A {
return first + second
})
}