module Data.Microgroove.Test where
import Data.Microgroove
import qualified Data.Microgroove.Mutable as M
import qualified Data.Vector as V
import Data.Microgroove.Lib
a :: Rec [] '[Int,Char,String,[Double]]
a = [1] :& "a" :& ["wow","what"] :& [[1,2,3], [4,5]] :& RNil
aa :: Rec [] '[Char]
aa = subRecord# @'[1] a
head',head_ :: Rec f (x ': xs) -> f x
head' (a :& _) = a
head_ (Rec# v) = cast# (V.head v)
pattern RCons# x xs <- (( \ (Rec# v) -> (cast# $ V.head v, Rec# $ V.tail v)) -> (x,xs)) where
RCons# x (Rec# xs) = Rec# (V.cons (cast# x) xs)