diff --git a/cryptol.cabal b/cryptol.cabal
--- a/cryptol.cabal
+++ b/cryptol.cabal
@@ -1,5 +1,5 @@
 Name:                cryptol
-Version:             2.2.3
+Version:             2.2.4
 Synopsis:            Cryptol: The Language of Cryptography
 Description: Cryptol is a domain-specific language for specifying cryptographic algorithms. A Cryptol implementation of an algorithm resembles its mathematical specification more closely than an implementation in a general purpose language. For more, see <http://www.cryptol.net/>.
 License:             BSD3
@@ -23,7 +23,7 @@
 source-repository this
   type:     git
   location: https://github.com/GaloisInc/cryptol.git
-  tag:      v2.2.3
+  tag:      v2.2.4
 
 flag static
   default: False
diff --git a/dist/build/Cryptol/Parser.hs b/dist/build/Cryptol/Parser.hs
--- a/dist/build/Cryptol/Parser.hs
+++ b/dist/build/Cryptol/Parser.hs
@@ -3736,7 +3736,7 @@
 {-# LINE 1 "templates/GenericTemplate.hs" #-}
 {-# LINE 1 "<built-in>" #-}
 {-# LINE 19 "<built-in>" #-}
-{-# LINE 1 "/usr/local/Cellar/ghc/7.10.1/lib/ghc-7.10.1/include/ghcversion.h" #-}
+{-# LINE 1 "/usr/local/Cellar/ghc/7.10.1_1/lib/ghc-7.10.1/include/ghcversion.h" #-}
 
 
 
diff --git a/dist/build/Cryptol/Parser/Lexer.hs b/dist/build/Cryptol/Parser/Lexer.hs
--- a/dist/build/Cryptol/Parser/Lexer.hs
+++ b/dist/build/Cryptol/Parser/Lexer.hs
@@ -258,7 +258,7 @@
 {-# LINE 1 "templates/GenericTemplate.hs" #-}
 {-# LINE 1 "<built-in>" #-}
 {-# LINE 18 "<built-in>" #-}
-{-# LINE 1 "/usr/local/Cellar/ghc/7.10.1/lib/ghc-7.10.1/include/ghcversion.h" #-}
+{-# LINE 1 "/usr/local/Cellar/ghc/7.10.1_1/lib/ghc-7.10.1/include/ghcversion.h" #-}
 
 
 
diff --git a/src/Cryptol/Symbolic/Prims.hs b/src/Cryptol/Symbolic/Prims.hs
--- a/src/Cryptol/Symbolic/Prims.hs
+++ b/src/Cryptol/Symbolic/Prims.hs
@@ -11,7 +11,7 @@
 {-# LANGUAGE FlexibleContexts #-}
 module Cryptol.Symbolic.Prims where
 
-import Data.Bits
+import Data.Bits ()
 import Data.List (genericDrop, genericReplicate, genericSplitAt, genericTake, sortBy, transpose)
 import Data.Ord (comparing)
 
@@ -107,8 +107,8 @@
               shl i =
                 case numTValue m of
                   Inf               -> dropV i xs
-                  Nat j | i >= j    -> replicateV j (zeroV a)
-                        | otherwise -> catV (dropV i xs) (replicateV i (zeroV a))
+                  Nat j | i >= j    -> replicateV j a (zeroV a)
+                        | otherwise -> catV (dropV i xs) (replicateV i a (zeroV a))
 
     ECShiftR      -> -- {m,n,a} (fin n) => [m] a -> [n] -> [m] a
       tlam $ \m ->
@@ -123,9 +123,9 @@
               shr :: Integer -> Value
               shr i =
                 case numTValue m of
-                  Inf               -> catV (replicateV i (zeroV a)) xs
-                  Nat j | i >= j    -> replicateV j (zeroV a)
-                        | otherwise -> catV (replicateV i (zeroV a)) (takeV (j - i) xs)
+                  Inf               -> catV (replicateV i a (zeroV a)) xs
+                  Nat j | i >= j    -> replicateV j a (zeroV a)
+                        | otherwise -> catV (replicateV i a (zeroV a)) (takeV (j - i) xs)
 
     ECRotL        -> -- {m,n,a} (fin m, fin n) => [m] a -> [n] -> [m] a
       tlam $ \m ->
@@ -299,8 +299,12 @@
       where m1 = sel (offset + 2 ^ length bs) bs
             m2 = sel offset bs
 
-replicateV :: Integer -> Value -> Value
-replicateV n x = VSeq False (genericReplicate n x)
+replicateV :: Integer -- ^ number of elements
+           -> TValue  -- ^ type of element
+           -> Value   -- ^ element
+           -> Value
+replicateV n (toTypeVal -> TVBit) x = VSeq True  (genericReplicate n x)
+replicateV n _                    x = VSeq False (genericReplicate n x)
 
 nth :: a -> [a] -> Int -> a
 nth def [] _ = def
