Skip to content

Instantly share code, notes, and snippets.

{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
{-|
@abailly
abailly / Db.hs
Created July 15, 2018 11:58
Overriding standard generator with custom ones (along the line of https://scastie.scala-lang.org/0MGUDt4AQbyEwPl7k0KnYQ)
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE StandaloneDeriving #-}
module Db where
import Data.List (intersperse)
@abailly
abailly / Wrapper.hs
Created May 25, 2018 16:24
Singletons-like type to value association
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE TypeFamilies #-}
import Protolude
data Tag = Foo | Bar
data RTag (t :: Tag) where
@abailly
abailly / EffServer.hs
Created May 8, 2018 08:18
A sample Servant + freer Effects server
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeOperators #-}
{-| Sample code struggling with reader Eff
uses code from https://github.com/TaktInc/freer
-}
import Control.Monad.Operational
import Data.Dynamic
import Data.Reify
import Protolude
data Prog i a f = Val a
| Step f f

Keybase proof

I hereby claim:

  • I am abailly on github.
  • I am arnaudbailly (https://keybase.io/arnaudbailly) on keybase.
  • I have a public key ASAaHgUGHeyZ51vsNSmzovlbDyL-9tU2PzOECjCUdW4NKAo

To claim this, I am signing this object:

class MonadClient m where
performRequestCT :: Proxy ct -> method -> Req -> m a
instance MonadClient ClientM where
....
instance OVERLAPPING_
-- Note [Non-Empty Content Types]
( MonadClient m, MimeUnrender ct a, BuildHeadersTo ls, ReflectMethod method, cts' ~ (ct ': cts)
) => HasClient (Verb method status cts' (Headers ls a)) where
@abailly
abailly / gist:8b3d99bdf70db8a4a84a9d334efe21d7
Created July 18, 2017 15:33
Error while trying to compile Idris
[113 of 113] Compiling IRTS.BCImp ( src/IRTS/BCImp.hs, .stack-work/dist/x86_64-osx/Cabal-1.24.2.0/build/IRTS/BCImp.o )
Preprocessing executable 'idris' for idris-1.0...
[1 of 1] Compiling Main ( main/Main.hs, .stack-work/dist/x86_64-osx/Cabal-1.24.2.0/build/idris/idris-tmp/Main.o )
Linking .stack-work/dist/x86_64-osx/Cabal-1.24.2.0/build/idris/idris ...
Preprocessing executable 'idris-codegen-c' for idris-1.0...
[1 of 2] Compiling Paths_idris ( .stack-work/dist/x86_64-osx/Cabal-1.24.2.0/build/autogen/Paths_idris.hs, .stack-work/dist/x86_64-osx/Cabal-1.24.2.0/build/idris-codegen-c/idris-codegen-c-tmp/Paths_idris.o )
[2 of 2] Compiling Main ( codegen/idris-codegen-c/Main.hs, .stack-work/dist/x86_64-osx/Cabal-1.24.2.0/build/idris-codegen-c/idris-codegen-c-tmp/Main.o )
Linking .stack-work/dist/x86_64-osx/Cabal-1.24.2.0/build/idris-codegen-c/idris-codegen-c ...
Preprocessing executable 'idris-codegen-javascript' for idris-1.0...
[1 of 2] Compiling Paths_idris ( .stack-work/d
@abailly
abailly / Retry.hs
Created July 16, 2017 11:07
A Retry combinator for servant
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeFamilies #-}
@abailly
abailly / GenericUUID.hs
Created June 1, 2017 14:08
example of defining Generic instances
{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeOperators #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
------------------------------------------------------------------------
-- | UUID support for Generics
-- inspired by https://raw.githubusercontent.com/tibbe/hashable/master/Data/Hashable/Generic.hs
module Gorilla.UUID.Generic where