Skip to content

Commit

Permalink
added aeson example
Browse files Browse the repository at this point in the history
  • Loading branch information
ekmett committed Sep 12, 2012
1 parent d23a7d1 commit 742af3d
Showing 1 changed file with 25 additions and 0 deletions.
25 changes: 25 additions & 0 deletions examples/Aeson.hs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE Rank2Types #-}
-- |
-- This is a small example of how to construct a projection for a third-party library like
-- @aeson@.
--
-- To test this:
--
-- > doctest Aeson.hs
module Aeson where

import Control.Lens
import Data.Aeson
import Data.ByteString.Lazy

-- |
-- >>> 5^.by aeson
-- "5"
-- >>> [1,2,3]^.by aeson
-- "[1,2,3]"
-- >>> aeson.both +~ 2 $ (2,3)^.by aeson
-- "[4,5]"
aeson, aeson' :: (FromJSON c, ToJSON d) => Projection ByteString ByteString c d
aeson = projection encode decode
aeson' = projection encode decode'

0 comments on commit 742af3d

Please sign in to comment.