Skip to content

Instantly share code, notes, and snippets.

@andrevdm
andrevdm / SimpleWebsockets.hs
Last active December 23, 2019 11:47
Haskell websockets - standalone
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeApplications #-}
import Protolude hiding (finally)
import Control.Exception.Safe (finally)
import qualified Network.WebSockets as Ws
main :: IO ()
main = do
@andrevdm
andrevdm / Enums.hs
Last active August 22, 2019 15:40
Haskell enum - names & JSON instances
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE DerivingVia #-}
module Enums where
import qualified Data.Map.Strict as Map
import qualified Data.Text as Txt
import qualified Data.Aeson as Ae
@andrevdm
andrevdm / polysemy.hs
Last active August 26, 2019 05:53
Polysemy basic test
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE RankNTypes #-}
@andrevdm
andrevdm / eventSourcingDemo.hs
Created March 12, 2019 16:49
Q&D haskell event sourcing test
#!/usr/bin/env stack
{- stack
script
--resolver lts-13.8
--package protolude
--package text
--package containers
--package stm
--package stm-chans
--package uuid
@andrevdm
andrevdm / list.hs
Created November 13, 2018 18:51
Brick list resize exception
#!/usr/bin/env stack
{- stack
script
--resolver lts-12.18
--package protolude
--package text
--package brick
--package vty
--package vector
-}
@andrevdm
andrevdm / Lib.hs
Created September 8, 2018 08:44
Haskell MTL and classy lenses example (ReaderT, ExceptT)
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE ScopedTypeVariables #-}
module Lib where
import Protolude
import Control.Lens.TH (makeClassy, makeClassyPrisms)
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module Combined where
import Protolude
import qualified Data.ByteString as BS
import Control.Monad.Trans (lift)
@andrevdm
andrevdm / req.hs
Created March 23, 2018 09:15
Example using req (Network.HTTP.Req)
import Protolude
import qualified Data.Default.Class as Def
import qualified Network.HTTP.Req as R
import Network.HTTP.Req ((/:))
post :: FilePath -> IO ByteString
post path =
R.runReq Def.def $ do
r <- R.req
R.POST
#!/usr/bin/env stack
{- stack
script
--resolver lts-10.4
--package text
--package protolude
--package text
--package lens
-}
{-# LANGUAGE NoImplicitPrelude #-}
@andrevdm
andrevdm / blog.cabal
Last active April 27, 2018 19:46
Hakyll build test and include example code
name: blog
version: 0.1.0.0
build-type: Simple
cabal-version: >= 1.10
executable site
main-is: site.hs
build-depends: base >= 4.7 && < 5
, protolude
, text