File: MemSize.hs

package info (click to toggle)
haskell-serialise 0.2.6.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 564 kB
  • sloc: haskell: 6,809; makefile: 6
file content (21 lines) | stat: -rw-r--r-- 462 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{-# LANGUAGE BangPatterns #-}
module Micro.MemSize where

import Micro.Types

class MemSize a where
  memSize :: a -> Int -> Int

memSize0 :: Int -> Int
memSize2 :: (MemSize a, MemSize a1) =>
            a -> a1 -> Int -> Int

memSize0           = \ !sz -> sz
memSize2 a b       = \ !sz -> memSize a . memSize b $ 2 + sz
{-# INLINE memSize0 #-}
{-# INLINE memSize2 #-}

instance MemSize Tree where
  memSize Leaf  = memSize0
  memSize (Fork b a) = memSize2 a b