Skip to content

Instantly share code, notes, and snippets.

View graydon's full-sized avatar
💭
objecting to features

Graydon Hoare graydon

💭
objecting to features
View GitHub Profile
@graydon
graydon / talon-cheat.txt
Last active June 11, 2024 09:11
talon cheatsheet
# this file isn't a full/complete grammar or even
# a correct one, but it contains the phrase chunks
# that I've found useful to practice / focus on
# while learning talon, I keep it open on screen
# alphabet
air bat cat drum
each fine gust harp
sit jury krunch look
made near odd pit
@graydon
graydon / polyvariants.ml
Created May 2, 2024 03:15
polymorphic variants in ocaml
(* The magic of ocaml polymorphic variants:
*
* - subsystem A produces an error `NSaServ
* - subsystem B checks for error `SaupDOF
* - both exist in a world with some extra variant `Common
*
* the two odd symbols _hash to the same representation_ in ocaml's
* implementation of polymorphic variant tagging.
*)
@graydon
graydon / move.rs
Created January 18, 2024 23:07
Ownership passing vs. borrowing
// This is just an elaboration of an off-hand toot I made earlier today
// concerning a coding pattern I find myself doing whenever possible: passing
// and returning owned values instead of borrowing references.
//
// I find it works well for long-lived values especially since the resulting
// composite objects have no lifetime qualifiers, so I don't have to plumb
// lifetimes through to all the code that uses them.
// Assumption: assume we have a few objects like this: a network connection, a
// database, some commands, etc. and we want to make a session type that uses
@graydon
graydon / LLM.md
Created March 29, 2023 03:59 — forked from rain-1/LLM.md
LLM Introduction: Learn Language Models

Purpose

Bootstrap knowledge of LLMs ASAP. With a bias/focus to GPT.

Avoid being a link dump. Try to provide only valuable well tuned information.

Prelude

Neural network links before starting with transformers.

@graydon
graydon / bel-eve-vr.md
Created January 27, 2020 23:06 — forked from wtaysom/bel-eve-vr.md
A Review of Paul Graham's Bel, Chris Granger's Eve, and a Silly VR Rant

Hello Friends,

This elf begging to climb onto the web for Christmas began as a personal email, a review of Paul Graham's little Lisp Bel. He sprouted arms, legs, and in gingerstyle ran away. Arms for symbols, legs for conses: these primitives are the mark a Lisp — even more so than the parenthesis. What do we get when we remove these foundation stones: naming and pairing?

No pairs. No cons. No structure. Unordered. Chaos. Eve, a beautifully incomplete aspect oriented triple store. No need for legs when you can effortlessly transport to your destination. Lazy. Pure. Here and now, a retrospective.

No symbols. No names. No variables. Combinators. Forth. No need for arms when you can effortlessly push and pop your stack. No words. A world without words. Virtual worlds. Virtual reality. Space. Time. Motion. Action. Kinetic Programming, a proposal.

I apologize in advance. Checking my pocketwatch, I see I haven't t

@graydon
graydon / devanagari.txt
Created April 6, 2019 05:28 — forked from Manishearth/devanagari.txt
devanagari breakdown
common stuff
-----------
Basic consonants(32):
कखगघङचछजझटठडढणतथदधनपफबभमयरलवशषसह
Weirdo that only is used in ligatures, but necessary(1)
Supporting examples 90 words (9 examples @ 10 words each)
Elevator pitch 50 words
Positioning statement 35 words
Headline benefits 24 words (3 benefits @ 8 words each)
Mission statement 20 words
Brand pillars 15 words (3 pillars @ 5 words each)
Target audience 15 words
Brand promise 10 words
{-# LANGUAGE FlexibleInstances #-}
module MiniToneInference where
import Prelude hiding ((&&))
import Control.Applicative
import Control.Monad
import Data.Map.Strict (Map, (!))
import Data.Maybe (fromJust)
import Data.Monoid ((<>))
import Data.Set (isSubsetOf)
@graydon
graydon / reducing
Created April 23, 2018 22:39 — forked from dcci/reducing
Delta:
$ cat check-2.sh
#!/bin/bash
ulimit -t 3; ~/work/llvm/build-release/bin/opt -S $1 | ~/work/llvm/build-release/bin/lli
if ! test "$?" = "0"; then
exit 1
fi
open FStar.Char
open FStar.Seq
(* Helper *)
let max a b = if a > b then a else b
(* Definition *)
let leftpad (c:char) (n:nat) (s:seq char) : seq char =
let pad = max (n - length s) 0 in
append (create pad c) s