diff options
Diffstat (limited to 'packages/base/src/Internal/Static.hs')
-rw-r--r-- | packages/base/src/Internal/Static.hs | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/packages/base/src/Internal/Static.hs b/packages/base/src/Internal/Static.hs index 0068313..419ff07 100644 --- a/packages/base/src/Internal/Static.hs +++ b/packages/base/src/Internal/Static.hs | |||
@@ -11,6 +11,7 @@ | |||
11 | {-# LANGUAGE FlexibleInstances #-} | 11 | {-# LANGUAGE FlexibleInstances #-} |
12 | {-# LANGUAGE TypeOperators #-} | 12 | {-# LANGUAGE TypeOperators #-} |
13 | {-# LANGUAGE ViewPatterns #-} | 13 | {-# LANGUAGE ViewPatterns #-} |
14 | {-# LANGUAGE BangPatterns #-} | ||
14 | 15 | ||
15 | {- | | 16 | {- | |
16 | Module : Internal.Static | 17 | Module : Internal.Static |
@@ -28,6 +29,7 @@ import qualified Numeric.LinearAlgebra as LA | |||
28 | import Numeric.LinearAlgebra hiding (konst,size,R,C) | 29 | import Numeric.LinearAlgebra hiding (konst,size,R,C) |
29 | import Internal.Vector as D hiding (R,C) | 30 | import Internal.Vector as D hiding (R,C) |
30 | import Internal.ST | 31 | import Internal.ST |
32 | import Control.DeepSeq | ||
31 | import Data.Proxy(Proxy) | 33 | import Data.Proxy(Proxy) |
32 | import Foreign.Storable(Storable) | 34 | import Foreign.Storable(Storable) |
33 | import Text.Printf | 35 | import Text.Printf |
@@ -50,6 +52,9 @@ lift2F | |||
50 | -> Dim n (c t) -> Dim n (c t) -> Dim n (c t) | 52 | -> Dim n (c t) -> Dim n (c t) -> Dim n (c t) |
51 | lift2F f (Dim u) (Dim v) = Dim (f u v) | 53 | lift2F f (Dim u) (Dim v) = Dim (f u v) |
52 | 54 | ||
55 | instance NFData t => NFData (Dim n t) where | ||
56 | rnf (Dim (force -> !_)) = () | ||
57 | |||
53 | -------------------------------------------------------------------------------- | 58 | -------------------------------------------------------------------------------- |
54 | 59 | ||
55 | newtype R n = R (Dim n (Vector ℝ)) | 60 | newtype R n = R (Dim n (Vector ℝ)) |
@@ -75,6 +80,18 @@ mkL x = L (Dim (Dim x)) | |||
75 | mkM :: Matrix ℂ -> M m n | 80 | mkM :: Matrix ℂ -> M m n |
76 | mkM x = M (Dim (Dim x)) | 81 | mkM x = M (Dim (Dim x)) |
77 | 82 | ||
83 | instance NFData (R n) where | ||
84 | rnf (R (force -> !_)) = () | ||
85 | |||
86 | instance NFData (C n) where | ||
87 | rnf (C (force -> !_)) = () | ||
88 | |||
89 | instance NFData (L n m) where | ||
90 | rnf (L (force -> !_)) = () | ||
91 | |||
92 | instance NFData (M n m) where | ||
93 | rnf (M (force -> !_)) = () | ||
94 | |||
78 | -------------------------------------------------------------------------------- | 95 | -------------------------------------------------------------------------------- |
79 | 96 | ||
80 | type V n t = Dim n (Vector t) | 97 | type V n t = Dim n (Vector t) |