summaryrefslogtreecommitdiff
path: root/testsuite/tests/numeric/should_compile/T23019.hs
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