Skip to content

Instantly share code, notes, and snippets.

View evanrelf's full-sized avatar

Evan Relf evanrelf

View GitHub Profile
use serde::{Deserialize, Deserializer, Serialize, Serializer};
use serde_json;
#[derive(Debug, Serialize, Deserialize)]
struct Foo(String);
#[derive(Debug, Serialize, Deserialize)]
struct Bar(String);
fn foo_ser<S>(value: &Foo, serializer: S) -> Result<S::Ok, S::Error>
#!/usr/bin/env bash
set -Eeuo pipefail
IFS=$'\n\t'
deferred=(true)
run_deferred() {
local status="$1"
abort() {
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE QualifiedDo #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE OverloadedLabels #-}
module X where
import Data.Functor.Identity (Identity (..))
import Data.Kind (Type)
import GHC.OverloadedLabels (IsLabel (..))
-- https://www.youtube.com/watch?v=dDtZLm7HIJs
{-# LANGUAGE BlockArguments #-}
module Main (main) where
import Control.Applicative
import Control.Monad (when)
import Data.Char
import Data.Foldable (for_)
#!/usr/bin/env runghc
{-# LANGUAGE BlockArguments #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE NegativeLiterals #-}
{-# OPTIONS_GHC -Wall #-}
{-# OPTIONS_GHC -Wno-unused-top-binds #-}
const A: usize = 2;
const B: usize = 3;
#[allow(clippy::assertions_on_constants)]
const _: () = {
assert!(2 <= A && A <= (B + 1) / 2, "Not a valid (a,b)-tree");
assert!(A == (B / 2) + (B % 2), "Not a valid B-tree");
};
module Main (main) where
import Control.Monad (when)
import Data.Proxy (Proxy (..))
import Data.String (IsString (..))
import Data.Void (Void)
import Type.Reflection
typeName
:: forall a s proxy
module ExhaustiveMap where
import Data.Map.Strict (Map)
import Data.Map.Strict qualified as Map
import Data.Maybe (fromMaybe)
import Prelude hiding (lookup, map)
newtype ExhaustiveMap k v
= ExhaustiveMap{ unExhaustiveMap :: k -> v }
module Repeatedly where
import Data.Foldable (foldl', foldlM)
repeatedly :: (Foldable t) => (a -> b -> b) -> (t a -> b -> b)
repeatedly = flip . foldl' . flip
repeatedlyM :: (Foldable t, Monad m) => (a -> b -> m b) -> (t a -> b -> m b)
repeatedlyM = flip . foldlM . flip
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DerivingStrategies #-}
import Data.Bits (toIntegralSized)
import Data.Function ((&))
import Data.Kind (Type)
import Data.Monoid (Sum (..))
import Data.Proxy (Proxy (..))
import Data.Sequence (Seq (..))
import Data.Sequence qualified as Seq