diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Revision history for yasi
 
+## 0.1.0.0 -- 2021-02-13
+
+ * Support `show` abstractions
+
 ## 0.0.0.1 -- 2021-02-13
 
  * Support older GHC versions
diff --git a/src/Yasi.hs b/src/Yasi.hs
--- a/src/Yasi.hs
+++ b/src/Yasi.hs
@@ -35,5 +35,7 @@
 --
 -- >>> let x = 1 + 1 in [i|1 + 1 = ${show x}|] :: ByteString
 -- "1 + 1 = 2"
+-- >>> [i|2 + 2 = $show|] (2 + 2) :: Text
+-- "2 + 2 = 4"
 i :: TH.QuasiQuoter
 i = interpolator '$' pure pure
diff --git a/src/Yasi/Internal.hs b/src/Yasi/Internal.hs
--- a/src/Yasi/Internal.hs
+++ b/src/Yasi/Internal.hs
@@ -33,11 +33,13 @@
   | Var String
   | ShowVar String
   | Abs -- idea due to interpolate
+  | ShowAbs
   deriving (Show, Eq, Generic)
 
 parseSegments :: MonadFail m => Char -> String -> m [Segment]
 parseSegments c = fmap (group []) . go
   where
+    -- rewrite this
     go s
       | let (lit, rest) = span (/= c) s, not (null lit) = (Lit lit :) <$> go rest
       | s == "" = pure []
@@ -47,6 +49,7 @@
         (var, '}' : rest) ->
           let seg = case var of
                 "" -> Abs
+                "show" -> ShowAbs
                 's' : 'h' : 'o' : 'w' : ' ' : var -> ShowVar var
                 var -> Var var
            in (seg :) <$> go rest
@@ -54,7 +57,9 @@
       | _ : v : rest' <- s,
         isVarStartChar v =
         let (vs, rest) = span isVarChar rest'
-         in (Var (v : vs) :) <$> go rest
+            var = v : vs
+            s = if var == "show" then ShowAbs else Var var
+         in (s :) <$> go rest
       | otherwise = fail $ "invalid char after " <> [c]
     isVarStartChar v = C.isAscii v && C.isAlpha v
     isVarChar v = C.isAscii v && (C.isAlphaNum v || v == '_' || v == '\'')
@@ -79,6 +84,9 @@
         Abs -> do
           n <- TH.newName "int"
           pure (TH.VarE n, TH.LamE [TH.VarP n])
+        ShowAbs -> do
+          n <- TH.newName "showint"
+          pure (TH.AppE (TH.VarE 'show) $ TH.VarE n, TH.LamE [TH.VarP n])
     prep asg af = do
       (as, g) <- asg
       (a, f) <- af
diff --git a/test/Interpolations.hs b/test/Interpolations.hs
--- a/test/Interpolations.hs
+++ b/test/Interpolations.hs
@@ -30,8 +30,8 @@
         let p = T.encodeUtf8 "℘"
         [i|℘$a℘$b℘$c℘|] === p <> a <> p <> T.encodeUtf8 b <> p <> T.encodeUtf8 (T.pack c) <> p,
       testProperty "abstractions" . property $ do
-        (a, b) <- (,) <$> forAll genText <*> forAll genText
-        [i|xxx-${}${}-yyy|] a b === "xxx-" <> a <> b <> "-yyy"
+        (a, b) <- (,) <$> forAll genText <*> forAll (Gen.integral $ Range.constant 0 1000)
+        [i|xxx-${}$show-yyy|] a (b :: Int) === "xxx-" <> a <> T.pack (show b) <> "-yyy"
     ]
   where
     genString = Gen.string range Gen.unicodeAll
diff --git a/test/Segments.hs b/test/Segments.hs
--- a/test/Segments.hs
+++ b/test/Segments.hs
@@ -21,5 +21,7 @@
   ps "${foobar]" @?= Nothing
   ps "test-$0foo" @?= Nothing
   ps "${show }" @?= Just [ShowVar ""]
+  ps "${show}" @?= Just [ShowAbs]
+  ps "$show" @?= Just [ShowAbs]
   where
     ps = parseSegments '$'
diff --git a/yasi.cabal b/yasi.cabal
--- a/yasi.cabal
+++ b/yasi.cabal
@@ -1,6 +1,6 @@
 cabal-version: 2.4
 name: yasi
-version: 0.0.0.1
+version: 0.1.0.0
 
 synopsis: Yet another string interpolator
 description:
