{"adoption": {"forks": 81, "observed_at": "2026-08-28T04:04:45.588915+00:00", "stars": 1449}, "canonical_url": "https://ross.abutalabs.com/products/grenade", "card": {"archived": false, "artifact_type": "library", "description": "Deep Learning in Haskell", "domain": ["machine-learning", "deep-learning"], "enriched": true, "function": ["machine-learning", "deep-learning"], "health_score": 20, "homepage": null, "language": "Haskell", "license": "BSD-2-Clause", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["HuwCampbell/grenade"], "name": "HuwCampbell/grenade", "platform": ["cross-platform"], "pushed_at": "2023-12-08T21:23:07+00:00", "repo": "HuwCampbell/grenade", "stars": 1449, "tags": ["neural-networks", "cnn", "rnn", "lstm", "gan", "dependently-typed", "haskell"], "topics": ["machine-learning", "deep-neural-networks", "haskell", "deep-learning", "generative-adversarial-networks", "convolutional-neural-networks"], "urls": [], "use_cases": ["train a CNN for MNIST digit classification in Haskell", "define an LSTM recurrent network for character-level text generation", "specify a neural network architecture with compile-time shape checking", "experiment with generative adversarial networks", "build deep learning models without leaving the Haskell ecosystem"], "what_it_is": "Grenade is a composable, dependently typed deep learning library for Haskell that lets users specify neural network architectures at the type level, including convolutional, fully connected, and recurrent layers like LSTM. Networks are defined as heterogeneous lists of layers with shape-checked data flow, requiring minimal term-level code.", "when_to_avoid": ["you need GPU acceleration or production-scale training performance", "you want a large ecosystem of pretrained models and tooling", "you are not working in Haskell"], "when_to_choose": ["you are a Haskell developer wanting type-safe neural network definitions", "you want compile-time verification of layer shapes and data dimensions", "you need a concise declarative way to specify CNNs or RNNs"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/grenade", "repo": "HuwCampbell/grenade", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.588915+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:35:58.630953+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d703d701c1ff522c06ac21182934201f9bbb4c7fe06dee954d045e4490f09ba0", "fetched_at": "2026-08-28T04:04:45.588915+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HuwCampbell/grenade"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.588915+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:35:58.630953+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d703d701c1ff522c06ac21182934201f9bbb4c7fe06dee954d045e4490f09ba0", "fetched_at": "2026-08-28T04:04:45.588915+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HuwCampbell/grenade"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:35:58.630953+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d703d701c1ff522c06ac21182934201f9bbb4c7fe06dee954d045e4490f09ba0", "fetched_at": "2026-08-28T04:04:45.588915+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HuwCampbell/grenade"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.588915+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.588915+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.588915+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:35:58.630953+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d703d701c1ff522c06ac21182934201f9bbb4c7fe06dee954d045e4490f09ba0", "fetched_at": "2026-08-28T04:04:45.588915+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HuwCampbell/grenade"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.588915+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.588915+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:35:58.630953+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d703d701c1ff522c06ac21182934201f9bbb4c7fe06dee954d045e4490f09ba0", "fetched_at": "2026-08-28T04:04:45.588915+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HuwCampbell/grenade"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.588915+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.588915+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.588915+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:35:58.630953+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d703d701c1ff522c06ac21182934201f9bbb4c7fe06dee954d045e4490f09ba0", "fetched_at": "2026-08-28T04:04:45.588915+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HuwCampbell/grenade"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.588915+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.588915+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:35:58.630953+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d703d701c1ff522c06ac21182934201f9bbb4c7fe06dee954d045e4490f09ba0", "fetched_at": "2026-08-28T04:04:45.588915+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HuwCampbell/grenade"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:35:58.630953+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d703d701c1ff522c06ac21182934201f9bbb4c7fe06dee954d045e4490f09ba0", "fetched_at": "2026-08-28T04:04:45.588915+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HuwCampbell/grenade"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:35:58.630953+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d703d701c1ff522c06ac21182934201f9bbb4c7fe06dee954d045e4490f09ba0", "fetched_at": "2026-08-28T04:04:45.588915+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HuwCampbell/grenade"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:35:58.630953+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d703d701c1ff522c06ac21182934201f9bbb4c7fe06dee954d045e4490f09ba0", "fetched_at": "2026-08-28T04:04:45.588915+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HuwCampbell/grenade"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3723, "days_push": 999, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}