Made Bit an instance of Lift so it can be used in vectorTH
authorChristiaan Baaij <christiaan.baaij@gmail.com>
Fri, 3 Jul 2009 19:41:04 +0000 (21:41 +0200)
committerChristiaan Baaij <christiaan.baaij@gmail.com>
Fri, 3 Jul 2009 19:41:04 +0000 (21:41 +0200)
vectorTH works now, but you will need the latest version of TFVec

Adders.hs
Bits.hs

index 9e78fcf87dd6a0b4c431133b5e6ad5bbfb9b918e..67d7d95e9fa3a7e3c5d693c2bf1980bb24900155 100644 (file)
--- a/Adders.hs
+++ b/Adders.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE TemplateHaskell #-}
+
 module Adders where
 import Bits
 import qualified Sim
@@ -174,8 +176,8 @@ highordtest = \x ->
 
 xand a b = hwand a b
 
-functiontest :: TFVec D4 (TFVec D3 Bit) -> (TFVec D12 Bit, TFVec D3 Bit, TFVec D3 (TFVec D3 Bit))
-functiontest = \v -> let r = (concat v, head v, tail v) in r
+functiontest :: TFVec D4 Bit -> TFVec D8 Bit
+functiontest = \v -> let r = v ++ $(vectorTH ([High,Low,High,Low] :: [Bit])) in r
 
 xhwnot x = hwnot x
 
diff --git a/Bits.hs b/Bits.hs
index b50430af9644553c657e6d6bb5ff5f95e1d69ad8..435b04e1efc5cb0292b345111f5584a694cf2521 100644 (file)
--- a/Bits.hs
+++ b/Bits.hs
@@ -1,9 +1,10 @@
-{-# LANGUAGE FlexibleContexts,GADTs,ExistentialQuantification,LiberalTypeSynonyms #-}
+{-# LANGUAGE FlexibleContexts,GADTs,ExistentialQuantification,LiberalTypeSynonyms,TemplateHaskell #-}
 
 module Bits where
 
 import qualified Data.Param.TFVec as TFVec
 import qualified Types
+import Language.Haskell.TH.Lift
 
 --class Signal a where
 --     hwand :: a -> a -> a
@@ -46,6 +47,8 @@ displaysig Low  = "0"
 data Bit = High | Low
   deriving (Show, Eq, Read)
 
+$(deriveLift1 ''Bit)
+
 -- A function to prettyprint a bitvector
 
 --displaysigs :: (Signal s) => [s] -> String