Make vectorTH use singleton when possible. master
authorMatthijs Kooijman <m.kooijman@student.utwente.nl>
Mon, 17 Aug 2009 10:09:25 +0000 (12:09 +0200)
committerMatthijs Kooijman <m.kooijman@student.utwente.nl>
Mon, 17 Aug 2009 10:09:25 +0000 (12:09 +0200)
This enabled the code generated by vectorTH to work with precision.

Data/Param/TFVec.hs

index 1b2051e6e9ba176335d69a01033e06b4dd1e1912..33758f9f5762aec6b422493be1b5b8f22887ac39 100644 (file)
@@ -102,6 +102,7 @@ vectorCPS xs = unsafeVectorCPS (toInteger (P.length xs)) xs
 vectorTH :: (Lift a, Typeable a) => [a] -> ExpQ
 -- vectorTH xs = sigE [| (TFVec xs) |] (decTFVecT (toInteger (P.length xs)) xs)
 vectorTH [] = [| empty |]
 vectorTH :: (Lift a, Typeable a) => [a] -> ExpQ
 -- vectorTH xs = sigE [| (TFVec xs) |] (decTFVecT (toInteger (P.length xs)) xs)
 vectorTH [] = [| empty |]
+vectorTH [x] = [| singleton x |]
 vectorTH (x:xs) = [| x +> $(vectorTH xs) |]
 
 unsafeVector :: NaturalT s => s -> [a] -> TFVec s a
 vectorTH (x:xs) = [| x +> $(vectorTH xs) |]
 
 unsafeVector :: NaturalT s => s -> [a] -> TFVec s a
@@ -349,4 +350,4 @@ lexTFVec :: ReadS String
 lexTFVec ('>':rest) = [(">",rest)]
 lexTFVec ('<':rest) = [("<",rest)]
 lexTFVec str = lex str
 lexTFVec ('>':rest) = [(">",rest)]
 lexTFVec ('<':rest) = [("<",rest)]
 lexTFVec str = lex str
-                                           
\ No newline at end of file
+