 $ do
        pos ← parseShortcutPos sc
        i' ← maybe (tellMaybeT ["unknown index ‘" ⊕ i ⊕ "’"]) pure $ readMaybe ('0':'x':i)
        s ← mapMaybe lette
ligatures ∷ (Logger m, Parser m, MonadFail m) ⇒ m [(Pos, Int, String)]
ligatures = do
    ["LIGATURE"] ← readLine
    catMaybes <$> many (try ligature)
ligatures = do
    ["LIGATURE"] ← readLine
    catMaybes <$> many (try ligature)