diff --git a/Data/Type/Natural.hs b/Data/Type/Natural.hs
--- a/Data/Type/Natural.hs
+++ b/Data/Type/Natural.hs
@@ -12,7 +12,7 @@
                      SNat, Sing (SZ, SS)
                     -- ** Smart constructors
                     , sZ, sS
-                    -- ** Arithmetic functions and thir singletons.
+                    -- ** Arithmetic functions and their singletons.
                     , min, Min, sMin, max, Max, sMax
                     , (:+:), (:+), (%+), (%:+), (:*:), (:*), (%:*), (%*)
                     , (:-:), (:-), (%:-), (%-)
@@ -22,6 +22,8 @@
                     , LeqTrueInstance(..), propToBoolLeq
                     -- * Conversion functions
                     , natToInt, intToNat, sNatToInt
+                    -- * Quasi quotes for natural numbers
+                    , nat, snat
                     -- * Properties of natural numbers
                     , succCongEq, plusCongR, plusCongL, succPlusL, succPlusR
                     , plusZR, plusZL, eqPreservesS, plusAssociative
@@ -50,7 +52,8 @@
                                    Show (..), error, id, otherwise, ($), (.), undefined)
 import qualified Prelude          as P
 import           Proof.Equational
-
+import Language.Haskell.TH.Quote
+import Language.Haskell.TH
 
 --------------------------------------------------
 -- * Natural numbers and its singleton type
@@ -637,3 +640,27 @@
       | n < 0     = error "negative integer!"
       | n == 0    = Monomorphic sZ
       | otherwise = withPolymorhic (n P.- 1) $ \sn -> Monomorphic $ sS sn
+
+--------------------------------------------------
+-- * Quasi Quoter
+--------------------------------------------------
+
+-- | Quotesi-quoter for 'Nat'. This can be used for an expression, pattern and type.
+--
+--   for example: @sing :: SNat ([nat| 2 |] :+ [nat| 5 |])@
+nat :: QuasiQuoter
+nat = QuasiQuoter { quoteExp = P.foldr appE (conE 'Z) . P.flip P.replicate (conE 'S) . P.read
+                  , quotePat = P.foldr (\a b -> conP a [b]) (conP 'Z []) . P.flip P.replicate 'S . P.read
+                  , quoteType = P.foldr appT (conT 'Z) . P.flip P.replicate (conT 'S) . P.read
+                  , quoteDec = error "not implemented"
+                  }
+
+-- | Quotesi-quoter for 'SNat'. This can be used for an expression, pattern and type.
+-- 
+--  For example: @[snat|12|] '%+' [snat| 5 |]@, @'sing' :: [snat| 12 |]@, @f [snat| 12 |] = \"hey\"@
+snat :: QuasiQuoter
+snat = QuasiQuoter { quoteExp = P.foldr appE (conE 'SZ) . P.flip P.replicate (conE 'SS) . P.read
+                   , quotePat = P.foldr (\a b -> conP a [b]) (conP 'SZ []) . P.flip P.replicate 'SS . P.read
+                   , quoteType = appT (conT ''SNat) . P.foldr appT (conT 'Z) . P.flip P.replicate (conT 'S) . P.read
+                   , quoteDec = error "not implemented"
+                   }
diff --git a/type-natural.cabal b/type-natural.cabal
--- a/type-natural.cabal
+++ b/type-natural.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                type-natural
-version:             0.0.2.1
+version:             0.0.3.0
 synopsis:            Type-level natural and proofs of their properties.
 description:         Type-level natural numbers and proofs of their properties.
 homepage:            https://github.com/konn/type-natural
@@ -26,3 +26,4 @@
                ,       singletons               == 0.8.*
                ,       equational-reasoning     == 0.0.*
                ,       monomorphic              >= 0.0.3
+               ,       template-haskell         == 2.8.*
