Skip to content

Instantly share code, notes, and snippets.

View norswap's full-sized avatar

norswap norswap

View GitHub Profile
@norswap
norswap / fetch.ts
Created June 2, 2023 16:51
Fetching abstraction with retries & throttling
/**
* TODO
*
* @module fetch
*/
import { sleep } from "src/utils/js-utils"
// =================================================================================================
export type FetchParams<Result> = {
@norswap
norswap / Combinators.java
Last active January 19, 2023 09:12
Handwritten JSON Parser with Parser Combinators
// Code for lecture [7. Parsing Combinators]
// https://www.youtube.com/watch?v=3Cfq4i6754s&list=PLOech0kWpH8-njQpmSNGSiQBPUvl8v3IM&index=7
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Deque;
import java.util.HashMap;
import java.util.Scanner;
import java.util.function.Supplier;
@norswap
norswap / Parser.java
Last active February 25, 2021 01:14
Simple Handwritten JSON Parser
// Code for lecture [6. Adding ASTs to Our Parser]
// https://www.youtube.com/watch?v=eAwRRaM-81A&list=PLOech0kWpH8-njQpmSNGSiQBPUvl8v3IM&index=6
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Deque;
import java.util.HashMap;
import java.util.Scanner;
@norswap
norswap / Parser.java
Last active February 26, 2022 13:45
Simple Handwritten JSON Recognizer
// Code for lecture [5. Writing Parsers by Hand]
// https://www.youtube.com/watch?v=Ytq0GQdnChg&list=PLOech0kWpH8-njQpmSNGSiQBPUvl8v3IM&index=5
import java.util.Scanner;
public final class Parser
{
// === SETUP ===================================================================================
private static final String EXAMPLE_INPUT =
@norswap
norswap / AddNodeGen.java
Last active June 27, 2020 16:16
Generated Files (listings for https://norswap.com/truffle-tutorial/)
// CheckStyle: start generated
package exni.nodes;
import com.oracle.truffle.api.CompilerDirectives;
import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
import com.oracle.truffle.api.dsl.GeneratedBy;
import com.oracle.truffle.api.frame.VirtualFrame;
import com.oracle.truffle.api.nodes.NodeCost;
import exni.nodes.AddNode;
import exni.nodes.ExniNode;
@norswap
norswap / _README.md
Last active February 27, 2024 20:35
norswap's process tool
@norswap
norswap / why.js
Created September 1, 2019 16:20
Y Combinator and Trampolines in Javascript
const assert = require('assert');
// const is_even = n =>
// (n === 0) || !is_even(n - 1);
const mock_is_even = (myself, n) =>
(n === 0) || !myself(myself, n - 1);
const mockingbird =
fn =>
@norswap
norswap / ! Visitors Comparison
Last active June 22, 2020 21:56
Visitors Comparison
See https://norswap.com/expression-problem-java/
@norswap
norswap / Visitors.java
Created May 25, 2019 18:38
Visitors in Java 8
public final class Visitors
{
// ---------------------------------------------------------------------------------------------
// 1. Initial setup.
interface Visitor {
void visit (A object);
void visit (B object);
}
@norswap
norswap / Node.java
Created September 13, 2017 13:00
Fast Java Reflection
package demo;
public interface Node {}