Unable to define valid instance for class when using `Type.Row`

Hello,

I have typeclass

class (RequestReader m) <= MatchRequest m xs (fromParams :: # Type) (toParams :: # Type) (fromMatched :: # Type) (toMatched :: # Type) where
  matchRequest :: Proxy xs -> (Matching fromParams fromMatched) -> m (Maybe (Matching toParams toMatched))

and I have instance

instance methodMatchRequest :: ( IsSymbol method, RequestReader m, Lacks "method" fromMatched, Cons "method" Matched fromMatched toMatched) => MatchRequest m (Method method) unused unused fromMatched toMatched where
  matchRequest method matching = getMethod >>= \requestMethod ->
    pure $ if requestMethod == (reflectSymbol (SProxy :: SProxy "method"))
      then Just (mark (SProxy :: SProxy "method") matching)
      else Nothing

which results into error

Error found:
in module Routing
at src/Routing.purs:118:18 - 118:50 (line 118, column 18 - line 118, column 50)

  Could not match type
                       
    ( method :: Matched
    | fromMatched0     
    )                  
                       
  with type
              
    toMatched1
              

while trying to match type ( method :: Matched
                           | fromMatched0     
                           )                  
  with type toMatched1
while solving type class constraint
                            
  Prim.Row.Cons "method"    
                Matched     
                fromMatched0
                toMatched1  
                            
while inferring the type of mark SProxy
in value declaration methodMatchRequest

where fromMatched0 is a rigid type variable
        bound at (line 0, column 0 - line 0, column 0)
      toMatched1 is a rigid type variable
        bound at (line 0, column 0 - line 0, column 0)

Background is that I’m experimenting with typelevel routing and I’m triing to define router that can match also headers and method…, but I’m triing to also have sanity check that would fail compile time if route definition is triing to match method tvice, or triing to match same header twice. I’m triing to achieve it using Cons and Lack from Type.Row by adding matched parts of request as fields to record and then checking using Lacks if they vere not defined on record, record that should contain matched parts named matched in definitions,

any idea how implement that class this way?
or is there any deeper mistake?

Hi @tino415 , if you can post your code on a try.purescript.org or a repo, it might be easier to find help.