diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # composition-prelude
 
+# 2.0.2.0
+
+  * Add `$.`
+
 # 2.0.1.0
 
   * Add `dup` for tuples
diff --git a/composition-prelude.cabal b/composition-prelude.cabal
--- a/composition-prelude.cabal
+++ b/composition-prelude.cabal
@@ -1,6 +1,6 @@
 cabal-version: 1.18
 name: composition-prelude
-version: 2.0.1.0
+version: 2.0.2.0
 license: BSD3
 license-file: LICENSE
 copyright: Copyright: (c) 2017-2018 Vanessa McHale
diff --git a/src/Control/Composition.hs b/src/Control/Composition.hs
--- a/src/Control/Composition.hs
+++ b/src/Control/Composition.hs
@@ -29,6 +29,7 @@
     , (-$)
     -- * Monadic helpers
     , bisequence'
+    , (.$)
     -- * Monadic actions
     , axe
     , biaxe
@@ -65,6 +66,7 @@
 infixr 8 -.**
 infixr 8 -.***
 infixr 8 -.****
+infixl 3 .$
 infixl 8 -$
 infixl 8 ~@~
 infixl 8 <~@~<
@@ -91,6 +93,18 @@
 
 dup :: a -> (a, a)
 dup = join (,)
+
+-- | Infix version of 'join'
+--
+-- As an example, we could use this to rewrite
+--
+-- > between (char '"') (char '"')
+--
+-- to
+--
+-- > between .$ (char '"')
+(.$) :: Monad m => m (m a) -> m a
+(.$) = join
 
 -- | Backwards function application
 (-$) :: (a -> b -> c) -> b -> a -> c
