packages feed

binary-file-0.14.3: examples/tiny.hs

{-# LANGUAGE QuasiQuotes, TypeFamilies, ScopedTypeVariables #-}

import File.Binary
import File.Binary.Instances
import File.Binary.Instances.LittleEndian
import System.Directory
import System.IO
import Control.Applicative
import Numeric
import System.Environment

size = 4

main = do
	n <- read . head <$> getArgs
	writeBinaryFile "tmp/out/tiny.dat" $ toBinary n $ Tiny 0x0123456789abcdef
	(t ::Tiny, rest) <- fromBinary n <$> readBinaryFile "tmp/out/tiny.dat"
	print t
	putStrLn $ flip showHex "" $ value t
	print rest

[binary|

Tiny deriving Show

arg :: Int

4: "tiny"
Main.size * arg{Integer}: value

|]