@@ -6,20 +6,21 @@ as an object with mirroring fields.
6
6
"""
7
7
abstract type StructuralTangent{P} <: AbstractTangent end
8
8
9
- function StructuralTangent {P} (nt:: NamedTuple ) where P
10
- return Tangent {P, typeof(nt)} (nt)
9
+ function StructuralTangent {P} (nt:: NamedTuple ) where {P}
10
+ return Tangent {P,typeof(nt)} (nt)
11
11
end
12
12
13
- StructuralTangent {P} (tup:: Tuple ) where P = Tangent {P, typeof(tup)} (tup)
14
- StructuralTangent {P} (dict:: Dict ) where P = Tangent {P} (dict)
15
-
13
+ StructuralTangent {P} (tup:: Tuple ) where {P} = Tangent {P,typeof(tup)} (tup)
14
+ StructuralTangent {P} (dict:: Dict ) where {P} = Tangent {P} (dict)
16
15
17
16
Base. keys (tangent:: StructuralTangent ) = keys (backing (tangent))
18
17
Base. propertynames (tangent:: StructuralTangent ) = propertynames (backing (tangent))
19
18
20
19
Base. haskey (tangent:: StructuralTangent , key) = haskey (backing (tangent), key)
21
20
if isdefined (Base, :hasproperty )
22
- Base. hasproperty (tangent:: StructuralTangent , key:: Symbol ) = hasproperty (backing (tangent), key)
21
+ function Base. hasproperty (tangent:: StructuralTangent , key:: Symbol )
22
+ return hasproperty (backing (tangent), key)
23
+ end
23
24
end
24
25
25
26
Base. iszero (t:: StructuralTangent ) = all (iszero, backing (t))
@@ -29,13 +30,12 @@ function Base.map(f, tangent::StructuralTangent{P}) where {P}
29
30
vals = map (f, Tuple (backing (tangent)))
30
31
named_vals = NamedTuple {L,typeof(vals)} (vals)
31
32
return if tangent isa Tangent
32
- Tangent {P, typeof(named_vals)} (named_vals)
33
+ Tangent {P,typeof(named_vals)} (named_vals)
33
34
else
34
35
# Handle MutableTangent
35
36
end
36
37
end
37
38
38
-
39
39
"""
40
40
backing(x)
41
41
@@ -77,7 +77,6 @@ function backing(x::T)::NamedTuple where {T}
77
77
end
78
78
end
79
79
80
-
81
80
"""
82
81
_zeroed_backing(P)
83
82
@@ -193,7 +192,6 @@ function Base.showerror(io::IO, err::PrimalAdditionFailedException{P}) where {P}
193
192
return println (io)
194
193
end
195
194
196
-
197
195
"""
198
196
Tangent{P, T} <: StructuralTangent{P} <: AbstractTangent
199
197
@@ -258,7 +256,6 @@ function _backing_error(P, G, E)
258
256
return throw (ArgumentError (msg))
259
257
end
260
258
261
-
262
259
function Base.:(== )(a:: Tangent{P,T} , b:: Tangent{P,T} ) where {P,T}
263
260
return backing (a) == backing (b)
264
261
end
0 commit comments