-- atB (below), I get a type error:
-- 
--     Couldn't match expected type `Basis a1' against inferred type `()'
--       Expected type: a1 :-* (s :> Two s)
--       Inferred type: s  :-* (s :> Two s)
--     In the first argument of `atB', namely `derivative v'
-- 
-- I think this type error is a GHC bug, but I'm not sure.

-- atB :: (AdditiveGroup b, HasTrie a) => Maybe (a :->: b) -> a -> b
-- -- atB :: (AdditiveGroup b, HasBasis a, HasTrie (Basis a)) =>
-- --        Maybe (Basis a :->: b) -> Basis a -> b
-- l `atB` b = maybe zeroV (`untrie` b) l