{-# LANGUAGE OverloadedStrings #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} {-# OPTIONS_GHC -fno-warn-name-shadowing #-} {-# OPTIONS_GHC -fno-warn-unused-local-binds #-} module Example3 where import Control.Monad import qualified Data.ByteString as BS import qualified HaskellWorks.Data.Json.Standard.Cursor.Fast as JCF import qualified HaskellWorks.Data.TreeCursor as TC example :: IO () example :: IO () example = do let fc :: Cursor -> Maybe Cursor fc = forall k. TreeCursor k => k -> Maybe k TC.firstChild let ns :: Cursor -> Maybe Cursor ns = forall k. TreeCursor k => k -> Maybe k TC.nextSibling let jsonBs :: ByteString jsonBs = ByteString "[null, {\"field\": 1}]" :: BS.ByteString let ibip :: IbBp ibip = ByteString -> IbBp JCF.simdToIbBp ByteString jsonBs let cursor :: Cursor cursor = ByteString -> IbBp -> Cursor JCF.fromBsIbBp ByteString jsonBs IbBp ibip let Maybe Cursor _ = Cursor -> Maybe Cursor fc Cursor cursor let Maybe Cursor _ = (Cursor -> Maybe Cursor fc forall (m :: * -> *) a b c. Monad m => (a -> m b) -> (b -> m c) -> a -> m c >=> Cursor -> Maybe Cursor ns) Cursor cursor forall (m :: * -> *) a. Monad m => a -> m a return ()