diff --git a/Changelog.md b/Changelog.md
--- a/Changelog.md
+++ b/Changelog.md
@@ -1,3 +1,7 @@
+### 0.3.2.1
+
+- Replace use of *liftM2* with the applicative style.
+
 ### 0.3.2.0
 
 - Improvement after the previous release: do not use */dev/tty* if the backend
diff --git a/pandoc-vimhl.cabal b/pandoc-vimhl.cabal
--- a/pandoc-vimhl.cabal
+++ b/pandoc-vimhl.cabal
@@ -1,5 +1,5 @@
 name:                    pandoc-vimhl
-version:                 0.3.2.0
+version:                 0.3.2.1
 synopsis:                Pandoc filter for native Vim code highlighting
 description:             Pandoc filter for native Vim code highlighting
         in HTML and PDF documents. Requires Vim (or Neovim) and plugin
diff --git a/vimhl.hs b/vimhl.hs
--- a/vimhl.hs
+++ b/vimhl.hs
@@ -23,9 +23,9 @@
 import qualified Data.Text.IO as T
 
 vimHl :: Maybe Format -> Block -> IO Block
-vimHl (Just fm@(Format fmt)) (CodeBlock (_, cls@(ft : _), namevals) contents)
-    | lookup "hl" namevals' == Just "vim" &&
-        fmt `elem` ["html", "latex", "gfm"] = do
+vimHl (Just fmt) (CodeBlock (_, cls@(ft : _), namevals) contents)
+    | Just "vim" <- lookup "hl" namevals'
+    , fmt `elem` ["html", "latex", "gfm"] = do
         let vimhlcmd = unwords [cmd fmt, nmb]
                 where cmd "latex" = "MakeTexCodeHighlight"
                       cmd _ = "MakeHtmlCodeHighlight"
@@ -75,22 +75,22 @@
                 r <- waitForProcess handle
                 unless (r == ExitSuccess) $ exitWith r
                 T.readFile dst
-        return $ RawBlock fm' $ wrap fm block
+        return $ uncurry RawBlock $ decorate fmt block
     where namevals' = map (T.map toLower *** T.unpack) namevals
-          fm' | fm == Format "latex" = fm
-              | otherwise = Format "html"
           {- Note that Github markdown sanitizer strips CSS styles in HTML
-           - tags. See details at https://github.com/github/markup. -}
-          wrap "gfm" block = T.concat
-              ["<div class=\"highlight notranslate \
-               \position-relative overflow-auto\" dir=\"auto\" \
-               \data-snippet-clipboard-copy-content=\""
-              ,escapeHtml $ stripShellOutputPrompt contents
-              ,"\">"
-              ,block
-              ,"</div>"
-              ]
-          wrap _ block = block
+           - tags. See details at https://github.com/github/markup#readme. -}
+          decorate "gfm" block =
+              ("html"
+              ,T.concat ["<div class=\"highlight notranslate \
+                         \position-relative overflow-auto\" dir=\"auto\" \
+                         \data-snippet-clipboard-copy-content=\""
+                        ,escapeHtml $ stripShellOutputPrompt contents
+                        ,"\">"
+                        ,block
+                        ,"</div>"
+                        ]
+              )
+          decorate fm block = (fm, block)
           escapeHtml = T.concatMap $ \case
               '<' -> "&lt;"
               '>' -> "&gt;"
@@ -132,10 +132,10 @@
     maybe (do
                home <- getHomeDirectory `catchIOError` const (return "")
                let vimrc = home </> ".vimrc.pandoc"
-                   exists = doesFileExist &&> (fmap readable . getPermissions)
-                   (&&>) = liftM2 andM
-                   (<<$) = liftM2 (<$>)
-               (bool Nothing . Just) <<$ exists $ vimrc
+                   returnIf = (fmap <$> bool Nothing . Just <*>)
+                   exists = andM <$>
+                       doesFileExist <*> fmap readable . getPermissions
+               returnIf exists vimrc
           ) (return . Just)
 {-# NOINLINE vimrcPandoc #-}
 
