translateDomainExpressionCrossScope scope _ nsid (L1.L1DomainFunctionEvaluate ss func args) =
  (,) <$>
    (L2.L2DomainFunctionEvaluate ss
      <$> findScopedSymbolByRAPath ss nsid func
            (\nsc dfName ->
                M.lookup (L1.l1IdBS dfName) (L2.l2nsDomainFunctions nsc)
            )
      <*> mapM (translateDomainExpression scope ss nsid) args
    ) <*> (pure scope)
translateDomainExpressionCrossScope scope _ nsid (L1.L1DomainFunctionEvaluate ss func args) =
  (,) <$>
    (L2.L2DomainFunctionEvaluate ss
      <$> findScopedSymbolByRAPath ss nsid func
            (\nsc dfName ->
                M.lookup (L1.l1IdBS dfName) (L2.l2nsDomainFunctions nsc)
            )
      <*> mapM (translateDomainExpression scope ss nsid) args
    ) <*> (pure scope)
translateDomainExpressionCrossScope scope _ nsid (L1.L1DomainFunctionEvaluate ss func args) =
  (,) <$>
    (L2.L2DomainFunctionEvaluate ss
      <$> findScopedSymbolByRAPath ss nsid func
            (\nsc dfName ->
                M.lookup (L1.l1IdBS dfName) (L2.l2nsDomainFunctions nsc)
            )
      <*> mapM (translateDomainExpression scope ss nsid) args
    ) <*> (pure scope)