Skip to content

Instantly share code, notes, and snippets.

View pete-murphy's full-sized avatar

Pete Murphy pete-murphy

View GitHub Profile
module Main where
import Prelude
import Data.Maybe (Maybe(..))
import Data.Map as Map
import Data.Traversable as Traversable
import Effect (Effect)
import Effect.Exception as Exception
import Effect.Unsafe as Effect.Unsafe
@pete-murphy
pete-murphy / error-collecting.md
Last active April 30, 2024 13:50
Error collecting

Often we want to iterate through a collection of items, performing some effect for each item. This means we want some function that looks like

(a -> f b) -> t a -> result

where a -> f b is our effectful computation, t a is our collection (of as) and result could take a few different shapes depending on the requirements of our program, especially in the common case when the effect f encapsulates some notion of failure (like TaskEither in fp-ts, or anything with ExceptT in its stack in Haskell).

[!TIP]

module FnReport exposing (rule)
{-| Run with
elm-review ./src/I18n.elm --extract --report=json --rules FnReport | jq -r '.extracts.FnReport'
-}
import Elm.Syntax.Declaration as Declaration exposing (Declaration)
import Elm.Syntax.ModuleName exposing (ModuleName)
@pete-murphy
pete-murphy / ModuleUsage.elm
Last active March 27, 2024 13:50
elm-review: ModuleUsage
module ModuleUsage exposing (..)
import Dict exposing (Dict)
import Elm.Syntax.Expression as Expression exposing (Expression)
import Elm.Syntax.Import exposing (Import)
import Elm.Syntax.ModuleName exposing (ModuleName)
import Elm.Syntax.Node as Node exposing (Node)
import Json.Encode as Encode
import Review.ModuleNameLookupTable as ModuleNameLookupTable exposing (ModuleNameLookupTable)
import Review.Project.Dependency as Dependency exposing (Dependency)
@pete-murphy
pete-murphy / confetti.ts
Created March 10, 2024 21:32
GitHub sponsor confetti
// This code is an adaptation of https://codepen.io/Pillowfication/pen/PNEJbY
// Markus Tran deserves all the credit!!!
const random = Math.random
const cos = Math.cos
const sin = Math.sin
const PI = Math.PI
const PI2 = PI * 2
const spread = 40
const sizeMin = 3
module ExtractImportGraph exposing (rule)
import Dict exposing (Dict)
import Elm.Syntax.Import exposing (Import)
import Elm.Syntax.ModuleName exposing (ModuleName)
import Elm.Syntax.Node as Node exposing (Node)
import Json.Encode as Encode
import Review.Project.Dependency as Dependency exposing (Dependency)
import Review.Rule as Rule exposing (Rule)
import Set exposing (Set)
module App where
import Prelude
import Beta.DOM as DOM
import Beta.DOM.HTML as HTML
import Data.Foldable as Foldable
import Effect.Class.Console as Console
import Effect.Timer as Timer
-- import React.Basic.DOM as DOM
@pete-murphy
pete-murphy / flake.nix
Created April 17, 2023 00:10
zbg nix flake debugging
{
inputs = {
flake-utils.url = "github:numtide/flake-utils";
# nixpkgs.follows = "opam-nix/nixpkgs";
nixpkgs.url = "github:NixOS/nixpkgs/master";
# nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
# opam-nix = {
# url = "github:tweag/opam-nix";
# inputs.nixpkgs.follows = "nixpkgs";
# };
@pete-murphy
pete-murphy / commits-min.json
Last active February 1, 2023 20:28
monorail3 count lines
[
{
"id": "PR_kwDOEUG_Qs5I8CFw",
"number": 9160
},
{
"id": "PR_kwDOEUG_Qs5Iop1l",
"number": 9145
},
{