translateExpression scope _ nsid (L1.L1ExLambda ss (L1.L1PatternBind _ bvar) value) = do
  newBVar <- L2.l2NextScopedValueID <$> getL2Model
  modifyL2Model $ \mod -> mod {
    L2.l2NextScopedValueID = (\(L2.L2ScopedValueID n) ->
                               L2.L2ScopedValueID (n + 1)) newBVar }
  L2.L2ExLambda ss newBVar <$>
      translateExpression (scope { siValueIDMap = M.insert bvar newBVar (siValueIDMap scope)})
                           ss nsid value
translateExpression scope _ nsid (L1.L1ExLambda ss (L1.L1PatternBind _ bvar) value) = do
  newBVar <- L2.l2NextScopedValueID <$> getL2Model
  modifyL2Model $ \mod -> mod {
    L2.l2NextScopedValueID = (\(L2.L2ScopedValueID n) ->
                               L2.L2ScopedValueID (n + 1)) newBVar }
  L2.L2ExLambda ss newBVar <$>
      translateExpression (scope { siValueIDMap = M.insert bvar newBVar (siValueIDMap scope)})
                           ss nsid value
translateExpression scope _ nsid (L1.L1ExLambda ss (L1.L1PatternBind _ bvar) value) = do
  newBVar <- L2.l2NextScopedValueID <$> getL2Model
  modifyL2Model $ \mod -> mod {
    L2.l2NextScopedValueID = (\(L2.L2ScopedValueID n) ->
                               L2.L2ScopedValueID (n + 1)) newBVar }
  L2.L2ExLambda ss newBVar <$>
      translateExpression (scope { siValueIDMap = M.insert bvar newBVar (siValueIDMap scope)})
                           ss nsid value