Skip to content

Instantly share code, notes, and snippets.

View patrl's full-sized avatar

Patrick Elliott patrl

View GitHub Profile
@patrl
patrl / Update.hs
Created July 29, 2020 17:39
A GSV-style update semantics that validates double-negation elimination
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
type E = Int
type G = [Int]
newtype W = W Int deriving (Integral,Real,Enum,Num,Ord,Eq,Show)
type T = Bool

First, let's roll our own state monad. We'll treat assignments just as sequences of individuals.

{-# LANGUAGE TupleSections #-}

import Data.Bifunctor (first)
import Control.Applicative (liftA2)

type E = Int
@patrl
patrl / init-rust.sh
Created June 10, 2020 17:21
Basic nix rust setup
#!/usr/bin/env bash
set -Eeuxo pipefail
type git >/dev/null 2>&1 || { echo >&2 "I require git but it's not installed. Aborting."; exit 1; }
type nix >/dev/null 2>&1 || { echo >&2 "I require nix but it's not installed. Aborting."; exit 1; }
type niv >/dev/null 2>&1 || { echo >&2 "I require niv but it's not installed. Aborting."; exit 1; }
type direnv >/dev/null 2>&1 || { echo >&2 "I require direnv but it's not installed. Aborting."; exit 1; }
type lorri >/dev/null 2>&1 || { echo >&2 "I require lorri but it's not installed. Aborting."; exit 1; }
git init # initialize git repository
@patrl
patrl / init-haskell.sh
Last active June 6, 2020 17:02 — forked from masaeedu/init-haskell.sh
Basic nix haskell setup
#!/usr/bin/env bash
set -Eeuxo pipefail
type git >/dev/null 2>&1 || { echo >&2 "I require git but it's not installed. Aborting."; exit 1; }
type nix >/dev/null 2>&1 || { echo >&2 "I require nix but it's not installed. Aborting."; exit 1; }
type niv >/dev/null 2>&1 || { echo >&2 "I require niv but it's not installed. Aborting."; exit 1; }
type direnv >/dev/null 2>&1 || { echo >&2 "I require direnv but it's not installed. Aborting."; exit 1; }
type lorri >/dev/null 2>&1 || { echo >&2 "I require lorri but it's not installed. Aborting."; exit 1; }
git init # initialize git repository
newtype ContBool a = ContBool { (>-) :: (a -> Bool) -> Bool }
instance Functor ContBool where
fmap f m = ContBool $ \k ->
m >-
\a ->
k $ f a
instance Applicative ContBool where
pure a = ContBool $ \k -> k a
@patrl
patrl / myweechat.md
Created January 23, 2020 17:10 — forked from pascalpoitras/config.md
My always up-to-date WeeChat configuration (weechat-dev)

WeeChat Screenshot

You need at least WeeChat 2.8-dev

Enable mouse

/mouse enable

@patrl
patrl / ihaskell-win.md
Last active January 9, 2020 21:53
Setting up a jupyter notebook with iHaskell on windows

The existence of WSL 2, the nix package manager, and tweag.io's jupyterWith project make it (relatively) easy to set up a working jupyter notebook with the iHaskell kernel in windows 10.

Step 1: Install WSL 2

  • If you don't already have it up and running, start by making you sure you have WSL 2 installed and activated, by following the instructions here. At the time of writing, you need to join the windows insiders program (slow ring is sufficient).
  • I use Ubuntu from the windows store with WSL 2, but the following instructions should be compatible with any distribution.

Step 2: Install the nix package manager

@patrl
patrl / README.md
Last active October 22, 2019 00:15
Building a Hakyll blog on NixOS with stack

Getting stack to build my Hakyll sites on NixOS turned out to be non-trivial. Include the following files in the project directory.

\chapter{\emph{Irgendein} quantifier and local implicature} % <=== TITLE HERE
\authorAndAffil{Anton Benz and Nicole Gotzner}{Leibniz-Zentrum Allgemeine Sprachwissenschaft (ZAS)} % AUTHOR
% \addsnippetauthor
%\snippetauthor{AUTHOR4}{AUTHOR4AFFILIATION}
%\addsnippetauthor
%\snippetauthor{AUTHOR5}{AUTHOR5AFFILIATION}
%
% \usepackage{mathptmx}
% \usepackage{parskip}
% \usepackage{booktabs}
--- a/config.def.h
+++ b/config.def.h
@@ -5,8 +5,8 @@
*
* font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html
*/
-static char *font = "Liberation Mono:pixelsize=12:antialias=true:autohint=true";
-static int borderpx = 2;
+static char *font = "Input Mono:pixelsize=11:antialias=true:autohint=true";
+static int borderpx = 4;