Claude Code Plugins

Community-maintained marketplace

Feedback

free-monad-gen

@plurigrid/asi
0
0

Free Monad Generation Skill (PLUS +1)

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name free-monad-gen
description Free Monad Generation Skill (PLUS +1)
version 1.0.0

Free Monad Generation Skill (PLUS +1)

Free structure generation from signatures

Trit: +1 (PLUS)
Color: #D82626 (Red)
Role: Generator/Creator

Core Concept

Free monads generate structure from a functor signature:

data Free f a 
  = Pure a                    -- Leaf (return)
  | Roll (f (Free f a))       -- Node (bind)

Universal property: Free f is left adjoint to forgetful functor U.

Dual: Cofree Comonad

data Cofree f a = a :< f (Cofree f a)
-- Head (extract) and infinite tail (duplicate)
Free Cofree
Producer (effects) Consumer (contexts)
Programs Interpreters
Syntax Semantics

Pattern Runs on Matter

Pattern (Free) ────runs-on────→ Matter (Cofree)
   ↓                                ↑
 Program                         Environment
   ↓                                ↑
 Effects                         Handlers

Integration with Gay.jl

# Free monad for color stream generation
struct ColorFree{A}
    tag::Symbol  # :pure or :roll
    value::Union{A, Tuple{UInt64, ColorFree{A}}}
end

# Generate free color structure
function free_color_stream(seed::UInt64, n::Int)
    if n == 0
        ColorFree(:pure, seed)
    else
        next_seed = splitmix64(seed)
        ColorFree(:roll, (seed, free_color_stream(next_seed, n-1)))
    end
end

# Interpret to actual colors
function interpret(free::ColorFree, palette)
    if free.tag == :pure
        return []
    else
        (seed, rest) = free.value
        color = gay_color(seed)
        [color; interpret(rest, palette)]
    end
end

Freer Monad (More Efficient)

data Freer f a where
  Pure :: a -> Freer f a
  Impure :: f x -> (x -> Freer f a) -> Freer f a

Benefits:

  • O(1) bind (vs O(n) for Free)
  • Existential continuation
  • Better for effect systems

DSL Generation Pattern

-- 1. Define signature functor
data MusicF next
  = Note Pitch Duration next
  | Rest Duration next
  | Chord [Pitch] Duration next
  | Par (Free MusicF ()) (Free MusicF ()) next

-- 2. Free monad gives DSL
type Music = Free MusicF

-- 3. Smart constructors
note :: Pitch -> Duration -> Music ()
note p d = liftF (Note p d ())

-- 4. Programs are data
melody = do
  note C4 quarter
  note E4 quarter
  note G4 half

GF(3) Triads

sheaf-cohomology (-1) ⊗ kan-extensions (0) ⊗ free-monad-gen (+1) = 0 ✓
temporal-coalgebra (-1) ⊗ dialectica (0) ⊗ free-monad-gen (+1) = 0 ✓
three-match (-1) ⊗ unworld (0) ⊗ free-monad-gen (+1) = 0 ✓

Commands

# Generate free structure from signature
just free-gen MusicF

# Interpret free structure
just free-interpret music.free synth

# Generate color stream
just free-color-stream $GAY_SEED 100

# Lift effect to free monad
just free-lift effect

Effect System Integration

-- Algebraic effects as free monads
data Effect = 
  | State s
  | Reader r  
  | Writer w
  | Async
  | Error e

type Eff effs = Freer (Union effs)

-- Handlers interpret effects
runState :: s -> Eff (State s ': effs) a -> Eff effs (a, s)

References

  • Swierstra, "Data Types à la Carte"
  • Kiselyov & Ishii, "Freer Monads, More Extensible Effects"
  • Capriotti & Kaposi, "Free Applicatives"

Scientific Skill Interleaving

This skill connects to the K-Dense-AI/claude-scientific-skills ecosystem:

Graph Theory

  • networkx [○] via bicomodule
    • Universal graph hub

Bibliography References

  • category-theory: 139 citations in bib.duckdb
  • monads: 13 citations in bib.duckdb

Cat# Integration

This skill maps to Cat# = Comod(P) as a bicomodule in the equipment structure:

Trit: 1 (PLUS)
Home: Presheaves
Poly Op: ⊗
Kan Role: Lan_K
Color: #4ECDC4

GF(3) Naturality

The skill participates in triads satisfying:

(-1) + (0) + (+1) ≡ 0 (mod 3)

This ensures compositional coherence in the Cat# equipment structure.