diff --git a/papillon.cabal b/papillon.cabal
--- a/papillon.cabal
+++ b/papillon.cabal
@@ -2,7 +2,7 @@
 cabal-version:	>= 1.8
 
 name:		papillon
-version:	0.1.0.6
+version:	0.1.1.0
 stability:	Experimental
 author:		Yoshikuni Jujo <PAF01143@nifty.ne.jp>
 maintainer:	Yoshikuni Jujo <PAF01143@nifty.ne.jp>
@@ -38,7 +38,7 @@
     Text.Papillon.Papillon,
     Text.Papillon.List
   build-depends:
-    base > 3 && < 5, template-haskell == 2.13.*,
+    base > 3 && < 5, template-haskell == 2.14.*,
     monads-tf == 0.1.*, transformers == 0.5.*,
     bytestring == 0.10.*
   ghc-options:		-Wall -fno-warn-tabs
@@ -48,6 +48,6 @@
   main-is:		papillon.hs
   other-modules:	Class
   build-depends:
-    directory, filepath, base > 3 && < 5, template-haskell == 2.13.*,
+    directory, filepath, base > 3 && < 5, template-haskell == 2.14.*,
     monads-tf == 0.1.*, transformers == 0.5.*, papillon
   ghc-options:		-Wall -fno-warn-tabs
diff --git a/src/Text/Papillon/Core.hs b/src/Text/Papillon/Core.hs
--- a/src/Text/Papillon/Core.hs
+++ b/src/Text/Papillon/Core.hs
@@ -154,7 +154,8 @@
 
 mkParseCore :: Bool -> String -> [Name] -> [Name] -> State Variables Clause
 mkParseCore th prefix rets rules = do
-	[ch, p, s, d] <- mapM (gets . getVariable) ["chars", "pos", "s", "d"]
+	arr <- mapM (gets . getVariable) ["chars", "pos", "s", "d"]
+	let [ch, p, s, d] = arr
 	let def ret rule = flip (ValD $ VarP ret) [] $
 		NormalB $ VarE (runStateTN th) `AppE` VarE rule `AppE` VarE d
 	pc <- parseChar th prefix
@@ -166,8 +167,9 @@
 
 parseChar :: Bool -> String -> State Variables Dec
 parseChar th prefix = do
-	[prs, ch, p, c, s, s', d] <- mapM (gets . getVariable)
+	arr <- mapM (gets . getVariable)
 		["parse", "chars", "pos", "c", "s", "s'", "d"]
+	let [prs, ch, p, c, s, s', d] = arr
 	let	emsg = "end of input"
 		np = VarE (mkName "updatePos") `AppE` VarE c `AppE` VarE p
 	return $ flip (ValD $ VarP ch) [] $ NormalB $ VarE (runStateTN th) `AppE`
