1
0
mirror of https://github.com/kalmarek/Groups.jl.git synced 2024-12-05 02:11:27 +01:00

fix elem_types: they dispatch on TYPE of parent

This commit is contained in:
kalmarek 2018-07-30 14:07:42 +02:00
parent 1783ba5065
commit 78abdc3181
3 changed files with 6 additions and 7 deletions

View File

@ -102,8 +102,8 @@ end
# #
############################################################################### ###############################################################################
elem_type(G::DirectProductGroup{T}) where {T} = elem_type(::Type{DirectProductGroup{T}}) where {T} =
DirectProductGroupElem{elem_type(G.group)} DirectProductGroupElem{elem_type(T)}
parent_type(::Type{DirectProductGroupElem{T}}) where {T} = parent_type(::Type{DirectProductGroupElem{T}}) where {T} =
DirectProductGroup{parent_type(T)} DirectProductGroup{parent_type(T)}

View File

@ -13,8 +13,7 @@ FreeGroupElem = GroupWord{FreeSymbol}
mutable struct FreeGroup <: AbstractFPGroup mutable struct FreeGroup <: AbstractFPGroup
gens::Vector{FreeSymbol} gens::Vector{FreeSymbol}
# order::Vector{T}
# fastmult_table::Array{Int,2}
function FreeGroup{T<:GSymbol}(gens::Vector{T}) function FreeGroup{T<:GSymbol}(gens::Vector{T})
G = new(gens) G = new(gens)
G.gens = gens G.gens = gens
@ -30,9 +29,9 @@ export FreeGroupElem, FreeGroup
# #
############################################################################### ###############################################################################
parent_type(::Type{FreeGroupElem}) = FreeGroup elem_type(::Type{FreeGroup}) = FreeGroupElem
elem_type(::FreeGroup) = FreeGroupElem parent_type(::Type{FreeGroupElem}) = FreeGroup
############################################################################### ###############################################################################
# #

View File

@ -49,7 +49,7 @@ end
# #
############################################################################### ###############################################################################
elem_type(::WreathProduct{T, I}) where {T, I} = WreathProductElem{elem_type(T), I} elem_type(::Type{WreathProduct{T, I}}) where {T, I} = WreathProductElem{elem_type(T), I}
parent_type(::Type{WreathProductElem{T, I}}) where {T, I} = parent_type(::Type{WreathProductElem{T, I}}) where {T, I} =
WreathProduct{parent_type(T), I} WreathProduct{parent_type(T), I}