blob: 6b3e3d92bacc62a7b063962937235375eccc5364 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
module T23019
(
eexponent
) where
-- spine lazy, value strict list of doubles
data List
= Nil
| {-# UNPACK #-} !Double :! List
infixr 5 :!
newtype TowerDouble = Tower { getTower :: List }
primal :: TowerDouble -> Double
primal (Tower (x:!_)) = x
primal _ = 0
eexponent :: TowerDouble -> Int
eexponent = exponent . primal
|