diff --git a/Main.hs b/Main.hs
--- a/Main.hs
+++ b/Main.hs
@@ -3,6 +3,7 @@
 {-# LANGUAGE OverloadedStrings #-}
 
 import           Control.Applicative
+import           Control.Lens.SemiIso
 import           Control.Lens.TH
 import qualified Data.Attoparsec.Text as AP
 import           Data.Char
@@ -11,6 +12,7 @@
 import qualified Data.Syntax as S
 import qualified Data.Syntax.Attoparsec.Text as S
 import qualified Data.Syntax.Char as S
+import qualified Data.Syntax.Combinator as S
 import qualified Data.Syntax.Pretty as S
 import           Data.Text (Text)
 import qualified Data.Text.IO as T
@@ -37,14 +39,17 @@
 atom =  _Var /$/ name
     /|/ parens expr
 
+-- | Parsers a list of applications.
+apps :: Syntax syn Text => syn AST
+apps = bifoldl1 (attemptAp_ _App) /$/ S.sepBy1 atom S.spaces1
+
 -- | An expression of our lambda calculus.
 expr :: Syntax syn Text => syn AST
-expr =  _App /$/ atom /* S.spaces1 /*/ atom
-    /|/ _Abs /$/ S.char '\\'   /* S.spaces_
+expr =  _Abs /$/ S.char '\\'   /* S.spaces_
               */ name          /* S.spaces
              /*  S.string "->" /* S.spaces
-             /*/ expr 
-    /|/ atom
+             /*/ expr
+    /|/ apps
 
 main :: IO ()
 main = do
diff --git a/syntax-example.cabal b/syntax-example.cabal
--- a/syntax-example.cabal
+++ b/syntax-example.cabal
@@ -1,5 +1,5 @@
 name:                syntax-example
-version:             0.1.0.0
+version:             0.2.0.0
 synopsis:            Example application using syntax, a library for abstract syntax descriptions.
 license:             MIT
 license-file:        LICENSE
@@ -16,7 +16,7 @@
 
 executable syntax-example
   main-is:             Main.hs
-  build-depends:       base >= 4 && < 5, lens, semi-iso,
-                       syntax, syntax-attoparsec, syntax-pretty,
+  build-depends:       base >= 4 && < 5, lens, semi-iso >= 0.3,
+                       syntax >= 0.1.1, syntax-attoparsec, syntax-pretty,
                        attoparsec, pretty, text
   default-language:    Haskell2010
