Skip to content

Instantly share code, notes, and snippets.

View moleike's full-sized avatar
🌟
dare to think for yourself

Alexandre Moreno moleike

🌟
dare to think for yourself
  • Barcelona
  • 22:02 (UTC +01:00)
  • X @moleike
View GitHub Profile
//> using scala "3.3.1"
//> using dep "org.scala-lang::scala3-staging:3.3.1"
import scala.quoted.*
import scala.quoted.staging.*
import scala.collection.mutable.ListBuffer
case class Parser[A: Type](
generate: (Expr[String], Expr[Int]) => Expr[Option[(A, Int)]]
):
@moleike
moleike / cantor.agda
Created April 25, 2025 15:30 — forked from jozefg/cantor.agda
A generalization of Cantor's diagonalization argument.
module cantor where
open import Data.Product
open import Data.Empty
open import Level
-- A variant of (https://coq.inria.fr/refman/language/core/inductive.html?highlight=cantor)
-- Sort of spooky this works.
data _≡_ {ℓ : Level}{A : Set ℓ} : A A Set₀ where
refl : (a : A) a ≡ a
package eveff
import cats.Monad
import cats.Applicative
import cats.Monoid
import cats.Semigroup
import cats.Functor
import cats.MonadThrow
import cats.data.Chain
import cats.data.Ior
// a memoized fibonnaci using field caching
local fib(n) =
local go(n) =
if n <= 1 then
{ ['fib0']: 1, ['fib1']: 1 }
else
go(n - 1) {
['fib'+n]: super['fib'+(n-1)] + super['fib'+(n-2)]
};
@moleike
moleike / closconv.lhs
Created June 5, 2021 01:41 — forked from jozefg/closconv.lhs
Tutorial on Closure Conversion and Lambda Lifting
This is my short-ish tutorial on how to implement closures in
a simple functional language: Foo.
First, some boilerplate.
> {-# LANGUAGE DeriveFunctor, TypeFamilies #-}
> import Control.Applicative
> import Control.Monad.Gen
> import Control.Monad.Writer
> import Data.Functor.Foldable
@moleike
moleike / NewEval.hs
Last active May 2, 2021 07:44
a new impl. to fix some shortcomings from how we represent thunks
{-# LANGUAGE RecursiveDo #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE NoMonomorphismRestriction #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE FlexibleInstances #-}
@moleike
moleike / benchmark.md
Created March 29, 2021 02:19 — forked from CertainLach/benchmark.md
Jrsonnet performance

Benchmark results

large_string_join

Command Mean [ms] Min [ms] Max [ms] Relative
jrsonnet large_string_join.jsonnet 16.5 ± 0.5 16.1 19.6 1.00
gojsonnet large_string_join.jsonnet 90.7 ± 3.8 85.6 104.0 5.49 ± 0.29
jsonnet large_string_join.jsonnet 69.5 ± 2.4 68.2 78.1 4.20 ± 0.20
sjsonnet large_string_join.jsonnet 760.6 ± 12.7 739.9 787.2 46.00 ± 1.67
@moleike
moleike / benchmarks.md
Last active March 25, 2021 11:09
Jsonnet benchmarks

Benchmark results

Command Mean [ms] Min [ms] Max [ms] Relative
hs-jsonnet bench.01.jsonnet 30.4 ± 5.5 20.8 41.8 1.00
jsonnet bench.01.jsonnet 89.4 ± 5.9 86.6 116.8 2.94 ± 0.57
hs-jsonnet bench.03.jsonnet 4.914 ± 1.423 4.135 8.748 8.51 ± 2.50
jsonnet bench.03.jsonnet 0.577 ± 0.027 0.555 0.633 1.00
hs-jsonnet bench.04.jsonnet 1.455 ± 0.154 1.331 1.834 1.00
jsonnet bench.04.jsonnet 5.670 ± 2.564 4.028 11.537 3.90 ± 1.81
@moleike
moleike / CC.hs
Created July 4, 2020 06:17 — forked from atennapel/CC.hs
Calculus of Constructions, normalization-by-evaluation, semantic typechecking
data Tm = Var Int | Ann Tm Tm | Abs Tm | App Tm Tm | Pi Tm Tm | Fix Tm | Uni
data Clos = Clos Tm Env
data Dm = DVar Int | DAbs Clos | DNeutral Int [Dm] | DPi Dm Clos | DFix Clos | DUni
type Env = [Dm]
capp :: Clos -> Dm -> Dm
capp (Clos b e) t = eval (t : e) b
vapp :: Dm -> Dm -> Dm
vapp a b =
@moleike
moleike / App.java
Created April 28, 2020 10:03 — forked from thomasdarimont/App.java
Simple AuthN & AuthZ example with Spring Boot / Security / Session
package demo;
import java.io.Serializable;
import java.security.Principal;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;