Skip to content

Instantly share code, notes, and snippets.

{-# LANGUAGE NoImplicitPrelude #-}
module FruitFRP where
import Prelude hiding ((.), id)
import Control.Arrow
import Control.Applicative
import Control.Category
import Control.Concurrent (threadDelay)
import Control.Monad
import Data.Bifunctor hiding (first)
@solomon-b
solomon-b / Netlink.hs
Created September 18, 2024 22:31
Netlink example
module RecursionPrinciples where
data List a = Nil | Cons a (List a)
-- 1 + (a * r )
-- foldr : (() -> r) -> ((a, r) -> r) -> List a -> r
-- unfoldr : (r -> Maybe (a, r)) -> r -> [a]
foldr_list :: ((a, r) -> r) -> r -> List a -> r
foldr_list _ r Nil = r
foldr_list f r (Cons a as) = foldr_list f (f (a, r)) as
@solomon-b
solomon-b / SingletonAPI.hs
Created September 18, 2024 22:21
Old example for using Singletones to build a typesafe API
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE DefaultSignatures #-}
module API where
import qualified Data.Text as T
import qualified Data.Aeson as J
import Control.Monad.IO.Class
import qualified Data.ByteString as B
import qualified Data.ByteString.Lazy as BL
import Data.Fix
import Data.Functor.Identity
import Data.Functor.Const
import Data.Profunctor
import Control.Lens hiding (view, set)
--------------------------------------------------------------------------------
main = print $ runMoore fib (1, 0) [(), (), (), (), (), (), (), (), (), ()]
@solomon-b
solomon-b / ccc.hs
Created August 28, 2024 22:25
Categorical soup. CCC compilation a la the work of Conal Elliot, Chris Penner, and Phil Freeman
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE FunctionalDependencies #-}
{-# LANGUAGE OverloadedStrings #-}
import Control.Category
import Data.Text (Text)
import Data.Void
import Prelude hiding ((.), id, curry, uncurry)
import Prelude qualified
@solomon-b
solomon-b / optics.hs
Last active August 28, 2024 22:26
A quick reference for `lens` implementations
-- | Concrete and Van Larhoeven Lens and Prisms with no imports.
main = print $ set (addressL . zipCodeL) solomon 42
data AdminStatus = IsAdmin | IsNotAdmin
deriving Show
data Person =
Person

Graphql Parser Stress Test RFC

## TL;DR

It would be really nice to have a set of GraphQL Documents which collectively express the entire GraphQL grammar. This would include atypical constructions such as random insertions of comma characters as whitespace.

## Problem Statement

{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE BlockArguments #-}
{-# LANGUAGE DeriveFunctor #-}
module RecursionSchemes where
--------------------------------------------------------------------------------
import Data.Smash
import Data.Function ((&))
module Main where
import Data.Foldable
import Data.List
import qualified Data.Map.Strict as M
-- https://en.wikipedia.org/wiki/Square_lattice
-- https://en.wikipedia.org/wiki/Ulam_spiral
data Dir a = U a | D a | L a | R a