Skip to content

Instantly share code, notes, and snippets.

View blackheaven's full-sized avatar

Gautier DI FOLCO blackheaven

View GitHub Profile
@blackheaven
blackheaven / readevents.hs
Last active April 26, 2024 11:40 — forked from kephas/readevents.hs
Attempt at polymorphic interpreter for Polysemy
{-# LANGUAGE BlockArguments #-}
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeApplications #-}
@blackheaven
blackheaven / flake.lock
Created August 7, 2023 10:06
Simplest derivation ever
{
"nodes": {
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1689068808,
"narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=",
"owner": "numtide",

Keybase proof

I hereby claim:

  • I am blackheaven on github.
  • I am gautierd (https://keybase.io/gautierd) on keybase.
  • I have a public key ASCz6TpaSp9jHFuNRKR13UAQn75Edfzlv6W-NP4sL3dTJgo

To claim this, I am signing this object:

@blackheaven
blackheaven / CassandraModSeqProvider.java
Created January 29, 2019 14:41
Mono.defer allow to be replayable
private Mono<ModSeq> handleRetries(CassandraId mailboxId) {
return Mono.defer(() -> tryFindThenUpdateOnce(mailboxId))
.retry(maxModSeqRetries);
}
module Y2018.M11.D26.Exercise where
import qualified Data.Set as S
import Control.Monad(foldM)
import Data.List(sort)
{--
An IQ puzzler:
Four (A, B, C and D) suspects were interrogated:
@blackheaven
blackheaven / Kata.hs
Created June 1, 2018 21:25
Coding Dojo (18-05-30) on K-means
module Kata
( kmeans
, randV
, prettifier
) where
import Data.List(groupBy, sortBy, minimumBy, unfoldr)
import Data.Function(on)
import System.Random(newStdGen, randomRs)
import Data.List(groupBy, sortBy)
import Data.Maybe(listToMaybe)
import Control.Applicative((<|>))
data Trie k v = RootTrie [Trie k v]
| NodeTrie k [Trie k v]
| EndTrie v
| EmptyTrie
toTrie :: (Eq k, Ord k) => [([k], v)] -> Trie k v
import Data.Function
import Data.List
import Data.Maybe
import Control.Monad
data XmlElement =
RegularNode String [XmlElement]
| EndNode String
| TextNode String
deriving (Show, Eq)
module Gol where
import Text
import Graphics.Input as Input
import Dict
import Set
import Benchmark (..)
-module(list).
-export([merger/0, atomic_sort/0, accumulator/0, last/1, init/0, add/2, get/1]).
atomic_sort() ->
receive
{L, Accumulator, Merger, Last} ->
Accumulator ! {lists:sort(L), Merger, Last},
atomic_sort()
end.