refreshed patches

This commit is contained in:
Joey Hess 2014-03-07 06:23:03 +00:00
parent d51d0a344f
commit 92aadb2865
9 changed files with 501 additions and 663 deletions

View file

@ -1,17 +1,17 @@
From 22c68b43dce437b3c22956f5a968f1b886e60e0c Mon Sep 17 00:00:00 2001
From: Joey Hess <joey@kitenet.net>
Date: Tue, 17 Dec 2013 19:15:16 +0000
From c0f5dcfd6ba7a05bb84b6adc4664c8dde109e6ac Mon Sep 17 00:00:00 2001
From: dummy <dummy@example.com>
Date: Fri, 7 Mar 2014 04:30:22 +0000
Subject: [PATCH] remove TH
---
fast/Data/Reflection.hs | 80 +------------------------------------------------
1 file changed, 1 insertion(+), 79 deletions(-)
fast/Data/Reflection.hs | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/fast/Data/Reflection.hs b/fast/Data/Reflection.hs
index 119d773..cf99efa 100644
index ca57d35..d3f8356 100644
--- a/fast/Data/Reflection.hs
+++ b/fast/Data/Reflection.hs
@@ -58,7 +58,7 @@ module Data.Reflection
@@ -59,7 +59,7 @@ module Data.Reflection
, Given(..)
, give
-- * Template Haskell reflection
@ -20,94 +20,40 @@ index 119d773..cf99efa 100644
-- * Useful compile time naturals
, Z, D, SD, PD
) where
@@ -151,87 +151,9 @@ instance Reifies n Int => Reifies (PD n) Int where
reflect = (\n -> n + n - 1) <$> retagPD reflect
{-# INLINE reflect #-}
@@ -161,6 +161,7 @@ instance Reifies n Int => Reifies (PD n) Int where
-- instead of @$(int 3)@. Sometimes the two will produce the same
-- representation (if compiled without the @-DUSE_TYPE_LITS@ preprocessor
-- directive).
+{-
int :: Int -> TypeQ
int n = case quotRem n 2 of
(0, 0) -> conT ''Z
@@ -176,7 +177,7 @@ nat :: Int -> TypeQ
nat n
| n >= 0 = int n
| otherwise = error "nat: negative"
-
+-}
#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL < 704
instance Show (Q a)
instance Eq (Q a)
@@ -195,6 +196,7 @@ instance Fractional a => Fractional (Q a) where
recip = fmap recip
fromRational = return . fromRational
--- | This can be used to generate a template haskell splice for a type level version of a given 'int'.
---
--- This does not use GHC TypeLits, instead it generates a numeric type by hand similar to the ones used
--- in the \"Functional Pearl: Implicit Configurations\" paper by Oleg Kiselyov and Chung-Chieh Shan.
-int :: Int -> TypeQ
-int n = case quotRem n 2 of
- (0, 0) -> conT ''Z
- (q,-1) -> conT ''PD `appT` int q
- (q, 0) -> conT ''D `appT` int q
- (q, 1) -> conT ''SD `appT` int q
- _ -> error "ghc is bad at math"
+{-
-- | This permits the use of $(5) as a type splice.
instance Num Type where
#ifdef USE_TYPE_LITS
@@ -254,7 +256,7 @@ instance Num Exp where
abs = onProxyType1 abs
signum = onProxyType1 signum
fromInteger n = ConE 'Proxy `SigE` (ConT ''Proxy `AppT` fromInteger n)
-
--- | This is a restricted version of 'int' that can only generate natural numbers. Attempting to generate
--- a negative number results in a compile time error. Also the resulting sequence will consist entirely of
--- Z, D, and SD constructors representing the number in zeroless binary.
-nat :: Int -> TypeQ
-nat n
- | n >= 0 = int n
- | otherwise = error "nat: negative"
-
-#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL < 704
-instance Show (Q a)
-instance Eq (Q a)
-#endif
-instance Num a => Num (Q a) where
- (+) = liftM2 (+)
- (*) = liftM2 (*)
- (-) = liftM2 (-)
- negate = fmap negate
- abs = fmap abs
- signum = fmap signum
- fromInteger = return . fromInteger
-
-instance Fractional a => Fractional (Q a) where
- (/) = liftM2 (/)
- recip = fmap recip
- fromRational = return . fromRational
-
--- | This permits the use of $(5) as a type splice.
-instance Num Type where
-#ifdef USE_TYPE_LITS
- a + b = AppT (AppT (VarT ''(+)) a) b
- a * b = AppT (AppT (VarT ''(*)) a) b
-#if MIN_VERSION_base(4,8,0)
- a - b = AppT (AppT (VarT ''(-)) a) b
-#else
- (-) = error "Type.(-): undefined"
-#endif
- fromInteger = LitT . NumTyLit
-#else
- (+) = error "Type.(+): undefined"
- (*) = error "Type.(*): undefined"
- (-) = error "Type.(-): undefined"
- fromInteger n = case quotRem n 2 of
- (0, 0) -> ConT ''Z
- (q,-1) -> ConT ''PD `AppT` fromInteger q
- (q, 0) -> ConT ''D `AppT` fromInteger q
- (q, 1) -> ConT ''SD `AppT` fromInteger q
- _ -> error "ghc is bad at math"
-#endif
- abs = error "Type.abs"
- signum = error "Type.signum"
-
plus, times, minus :: Num a => a -> a -> a
plus = (+)
times = (*)
minus = (-)
fract :: Fractional a => a -> a -> a
fract = (/)
-
--- | This permits the use of $(5) as an expression splice.
-instance Num Exp where
- a + b = AppE (AppE (VarE 'plus) a) b
- a * b = AppE (AppE (VarE 'times) a) b
- a - b = AppE (AppE (VarE 'minus) a) b
- negate = AppE (VarE 'negate)
- signum = AppE (VarE 'signum)
- abs = AppE (VarE 'abs)
- fromInteger = LitE . IntegerL
-
-instance Fractional Exp where
- a / b = AppE (AppE (VarE 'fract) a) b
- recip = AppE (VarE 'recip)
- fromRational = LitE . RationalL
+-}
#ifdef USE_TYPE_LITS
addProxy :: Proxy a -> Proxy b -> Proxy (a + b)
addProxy _ _ = Proxy
--
1.8.5.1
1.9.0