Code Monkey home page Code Monkey logo

readbits's Introduction

What is it?

Example code showing how to use the ByteString library to work with binary data in Haskell. The code reads in a file as a ByteString, translate the ByteString to an internal datatype, [Bit], transform the list of bits, re-packs it as a list of bytes, and write the list of bytes to a file.

How to build

You can either use cabal:

$ cabal configure
$ cabal build
$ ./dist/build/readbits-hs/readbits-hs infile outfile

Or you can just use ghc directly:

$ ghc -O3 --make readbits.hs -o readbits-hs
$ ./readbits-hs infile outfile

How to profile

One of points that code try to illustrate is how easy it is work with lazy steams. Thus, we write the code as if we read in the whole file, but due to laziness we only use constant memory independent of the size of the input file.

How can check that code really behaves as we intend? By using the space profiler:

$ ghc -O3 --make -prof -auto-all -caf-all readbits.hs -o readbits-hs
$ ./readbits-hs <infile> <outfile> +RTS -hc -p
$ hp2ps -e8in -c readbits-hs.hp && open readbits-hs.ps

readbits's People

Contributors

kfl avatar

Stargazers

 avatar

Watchers

 avatar James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.