# albrow/fo

An experimental language which adds functional programming features to Go.

Repository: https://github.com/albrow/fo
Canonical: https://ross.abutalabs.com/products/fo
Language: Go
License: NOASSERTION
License Family: other
Topics: language, generic-types, generic-functions, experimental-language, golang, functional-programming
Archived: true
Last push: 2022-09-19T18:24:59+00:00

## Health v2 (maintenance only)
Score: 10/100 (v2, computed 2026-09-03T02:20:16.233290+00:00)
- activity 0, release rhythm 35, longevity 100
- inputs: {"age_days": 3129, "days_push": 1444, "days_rel": null, "gap_med": null, "n_releases_24m": 0}
- flags: no_releases, archived, no_license
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 1224, forks 35 (observed 2026-08-28T04:04:02.870667+00:00)

## What it is
Fo (Functional Go) is an experimental programming language that extends Go with generics, including generic named types, functions, and methods, while remaining a superset of Go syntax. It ships as a simple compiler CLI that runs single .fo files and an online playground.

## Use cases
- add generics to Go programs
- write functional programming style code in Go
- try generic types and methods not possible in standard Go
- experiment with a Go-like language without installing anything via the playground
- study or hack on the Go compiler and ASTs
- run a single-file Go program with type parameters

## When to choose
- You want to explore generics syntax in Go on a small, single-file program
- You are interested in modifying the Go compiler or working with Go ASTs
- You need generic methods or omitted receiver type parameters, which standard Go does not support

## When to avoid
- You need generics in production Go — use the built-in generics in Go 1.18+
- You are building any real-world application — Fo only compiles one file at a time and is unstable
- You need an actively maintained language or toolchain — the project is explicitly no longer maintained

## Facets
- artifact type: cli-tool
- maturity: abandoned
- function: programming-language, compiler, cli
- domain: programming-languages, compilers, developer-tools
- platform: go, cli, cross-platform, windows
- tags: functional-programming, generics, generic-types, generic-functions, golang, experimental-language, superset-of-go, playground, go-compiler, ast, command-line, linux, macos

## Member repositories
- albrow/fo (main) score 10

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:04:02.870667+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T08:22:44.864326+00:00, confidence not recorded.
  - readme: https://github.com/albrow/fo (fetched 2026-08-28T04:04:02.870667+00:00, sha 827659b749d9)
- Data as of 2026-08-30T08:39:29.467469+00:00.
