mirror of
https://github.com/github/semantic.git
synced 2024-12-22 22:31:36 +03:00
Generalize liftAnalyze to any base functor.
This commit is contained in:
parent
ae7483291a
commit
b353b1aa5d
@ -108,10 +108,10 @@ load name = askModuleTable >>= maybe notFound evalAndCache . moduleTableLookup n
|
|||||||
-- | Lift a 'SubtermAlgebra' for an underlying analysis into a containing analysis. Use this when defining an analysis which can be composed onto other analyses to ensure that a call to 'analyzeTerm' occurs in the inner analysis and not the outer one.
|
-- | Lift a 'SubtermAlgebra' for an underlying analysis into a containing analysis. Use this when defining an analysis which can be composed onto other analyses to ensure that a call to 'analyzeTerm' occurs in the inner analysis and not the outer one.
|
||||||
liftAnalyze :: ( Coercible ( m term value (effects :: [* -> *]) value) (t m term value effects value)
|
liftAnalyze :: ( Coercible ( m term value (effects :: [* -> *]) value) (t m term value effects value)
|
||||||
, Coercible (t m term value effects value) ( m term value effects value)
|
, Coercible (t m term value effects value) ( m term value effects value)
|
||||||
, Functor (Base term)
|
, Functor base
|
||||||
)
|
)
|
||||||
=> SubtermAlgebra (Base term) term ( m term value effects value)
|
=> SubtermAlgebra base term ( m term value effects value)
|
||||||
-> SubtermAlgebra (Base term) term (t m term value effects value)
|
-> SubtermAlgebra base term (t m term value effects value)
|
||||||
liftAnalyze analyze term = coerce (analyze (second coerce <$> term))
|
liftAnalyze analyze term = coerce (analyze (second coerce <$> term))
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user