checkSSA :: MonadOhua m => Expression -> m ()
checkSSA = isSSA >>> \case
    [] -> return ()
    other -> throwErrorDebugS $ mkMsg other
  where
    mkMsg bnd = "Redefinition of bindings " <> show bnd
checkSSA :: MonadOhua m => Expression -> m ()
checkSSA = isSSA >>> \case
    [] -> return ()
    other -> throwErrorDebugS $ mkMsg other
  where
    mkMsg bnd = "Redefinition of bindings " <> show bnd
checkSSA = isSSA >>> \case
    [] -> return ()
    other -> throwErrorDebugS $ mkMsg other
  where
    mkMsg bnd = "Redefinition of bindings " <> show bnd