Skip to content

Instantly share code, notes, and snippets.

View cdparks's full-sized avatar
🍓

Chris Parks cdparks

🍓
View GitHub Profile
@cdparks
cdparks / sqlQQ.md
Created January 17, 2019 18:24
What is sqlQQ really doing

Here's a simple query with variable interpolation:

getBadge
  :: MonadIO m
  => BadgeId
  -> SqlPersistT m [Entity BadgeEvent]
getBadge badgeId =
  [sqlQQ|
    SELECT
@cdparks
cdparks / Grin.hs
Last active May 6, 2020 22:34
sum(upto(1, 1000)) GRIN example
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE MagicHash #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE FlexibleContexts #-}
import Control.Monad.State
import Data.Map.Strict (Map, (!))
import qualified Data.Map.Strict as Map
import Prelude hiding (log, sum)
@cdparks
cdparks / Add.hs
Last active June 11, 2020 16:58
Luv 2 type addition
-- An unserious response to
--
-- > I will believe in type systems the day one of them warns me about this code:
-- > pub fn add_two_integers(num1: Int, num2: Int) -> Int {
-- > num1 - num2
-- > }
--
-- I don't understand why people don't want to program like this. Types!
{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE FunctionalDependencies #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}