Skip to content

Instantly share code, notes, and snippets.

@paulvictor
Created April 6, 2022 10:00
Show Gist options
  • Save paulvictor/42ea7583f1d0792d5cc49af1c8dd6951 to your computer and use it in GitHub Desktop.
Save paulvictor/42ea7583f1d0792d5cc49af1c8dd6951 to your computer and use it in GitHub Desktop.
#!/usr/bin/env nix-shell
#! nix-shell -p "ghc.withPackages (pkgs: with pkgs; [ mtl transformers lens ]) " ghcid
#! nix-shell -I nixpkgs=https://github.com/nixos/nixpkgs-channels/archive/nixos-unstable.tar.gz
-- #! nix-shell -i "ghcid -c 'ghci -Wall' -T main"
#! nix-shell -i runghc
{-# LANGUAGE ViewPatterns #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
-- case claState of
-- Nothing -> pure []
-- Just cla -> do
-- claStatus <- getClaStatusObject lrId
-- case claStatus of
-- Nothing -> pure [cla]
-- Just claStatus' -> do
-- generateOffer <- getGenerateOfferObject lrId
-- case generateOffer of
-- Nothing -> pure ([cla] <> [claStatus'])
-- Just genOff -> do
-- fetchOffer <- getfetchOfferStatusObject lrId
-- case fetchOffer of
-- Nothing -> pure ([cla] <> [claStatus'] <> [genOff])
-- Just fetchOff -> pure ([cla] <> [claStatus'] <> [genOff] <> [fetchOff])
module Main where
import Control.Monad.Trans.Writer.Strict
import Control.Monad.Trans.Maybe
import Control.Monad.IO.Class
import Control.Monad.Trans.Class
getClaStatusObject :: MonadIO m => a -> m (Maybe Int)
getClaStatusObject _ = liftIO $ pure (Just 1)
getGenerateOfferObject :: MonadIO m => a -> m (Maybe Int)
getGenerateOfferObject _ =liftIO $ pure (Just 2)
getfetchOfferStatusObject :: MonadIO m => a -> m (Maybe Int)
getfetchOfferStatusObject _ =liftIO $ pure (Just 3)
main :: IO ()
main = do
xs <- execWriterT $ runMaybeT $ snippet
print xs
snippet :: MaybeT (WriterT [Int] IO) ()
snippet =
do
let
lrId = undefined
cla <- MaybeT $ getClaStatusObject lrId
lift $ tell [cla]
generateOffer <- MaybeT $ getGenerateOfferObject lrId
lift $ tell [generateOffer]
fetchOffer <- MaybeT $ getfetchOfferStatusObject lrId
lift $ tell [fetchOffer]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment