8 Research Papers · Haskell · bio.PL

DNA-Lang

A Typed Programming Language for Biological Systems

DNA contains seven functional data types that compose into a complete programming model. We formalize each as a typed construct, implement them in Haskell, and synthesize a unified orchestration language for biological intent, AI prediction, genome editing, and regulatory traceability.

The Genome Type System

Seven biological data types compose into a complete programming model

data Genome = Genome
  { code        :: [ProteinCode]      -- Paper I: Executable Functions
  , regulators  :: [Regulator]       -- Paper II: Control Flow
  , ncRNAs      :: [RNAControl]      -- Paper III: Signals
  , structure   :: [Structure]       -- Paper IV: Memory Layout
  , repeats     :: [Repeat]          -- Paper V: Self-Modifying
  , epigenetics :: [State]           -- Paper VI: Runtime State
  , programs    :: [Program]         -- Paper VII: Orchestration
  }

Research Papers

Matthew Long · The YonedaAI Collaboration · Chicago, IL · March 2026

Part Ibio.PL

Coding Sequences as Executable Functions

A Type-Theoretic Framework for the Central Dogma

Formalizes the central dogma (DNA→mRNA→Protein) as a typed compilation pipeline. Codons as opcodes, alternative splicing as dependent types, mutations as type errors.

Part IIbio.PL

Regulatory Sequences as Control Flow

A Type-Theoretic Framework for Gene Expression

Promoters as function entry points, enhancers as environment variables, silencers as access control. Gene regulatory networks as typed dataflow graphs.

Part IIIbio.PL

Non-Coding RNAs as Signals and Middleware

A Type-Theoretic Framework for Post-Transcriptional Control

miRNA as guard clauses, siRNA as exception handlers, lncRNA as middleware scaffolds, tRNA as natural transformations between codon and amino acid functors.

Part IVbio.PL

Structural DNA as Memory Architecture

A Type-Theoretic Framework for Genome Organization

Telomeres as linear resources, centromeres as synchronization primitives, TADs as memory segments, chromatin loops as pointers.

Part Vbio.PL

Repetitive Elements as Self-Modifying Code

A Type-Theoretic Framework for Genome Plasticity

Transposons as endofunctors on the genome category. Cut-and-paste as move semantics, copy-and-paste as template instantiation, domestication as naturalization.

Part VIbio.PL

Epigenetic Marks as Runtime State

A Type-Theoretic Framework for Chromatin Accessibility

DNA methylation as monadic configuration, histone modifications as access permissions, chromatin remodeling as garbage collection, bivalent chromatin as type superposition.

Part VIIbio.PL

Developmental Programs as Orchestration

A Type-Theoretic Framework for Morphogenesis

Hox genes as the main module, morphogen gradients as distributed config, cell fate as refinement type narrowing, Waddington landscape as type lattice.

Synthesisbio.PL

DNA-Lang: A Typed Orchestration Language

For Biological Programming

Synthesizes all 7 types into a unified language specification with parser, type checker, compiler (4 targets), and runtime. Includes PCSK9 knockout worked example.

Compiler Architecture

{ }
Layer 1

IR / Schema

Typed intermediate representation for targets, sequences, edits, assays, evidence

fn
Layer 2

DSL

Declarative language for programs: design, edit, screen, validate

>>
Layer 3

Compilers

Targets: SBOL, Benchling, AlphaFold, LIMS/ELN, assay planning

Layer 4

Verification

Off-target, payload, manufacturability, provenance constraints

Design
Sequences, guides, constructs
AI Pipeline
Predictions, scores, uncertainty
Lab Protocol
Assay plan, controls, criteria
Compliance
Provenance, lineage, decisions

Sample Program

PCSK9 Knockout Therapy in DNA-Lang

pcsk9_therapy.dna
program PCSK9_KO {

  target t = gene("PCSK9")

  edit e = knockout(target=t)

  guides g = design_guides(
    target=t,
    method=CRISPR_Cas9,
    require PAM="NGG"
  )

  guides safe_g = filter(g, off_target_score < 0.05)

  require v.payload_size <= delivery_capacity(LNP)

  assay a = plan_assay(
    system = hepatocyte_organoid,
    readouts = [editing_rate, LDL_reduction]
  )

  run a
  collect evidence
}