{"paper":{"title":"Pure Borrow: Linear Haskell Meets Rust-Style Borrowing","license":"http://creativecommons.org/licenses/by/4.0/","headline":"Pure Borrow shows that Linear Haskell can support Rust-style non-local borrowing while preserving purity.","cross_cats":[],"primary_cat":"cs.PL","authors_text":"Hiromi Ishii, Yusuke Matsushita","submitted_at":"2026-04-16T17:53:51Z","abstract_excerpt":"A promising approach to unifying functional and imperative programming paradigms is to localize mutation using linear or affine types. Haskell, a purely functional language, was recently extended with linear types by Bernardy et al., in the name of Linear Haskell. However, it remained unknown whether such a pure language could safely support non-local borrowing in the style of Rust, where each borrower can be freely split and dropped without direct communication of ownership back to the lender.\n  We answer this question affirmatively with Pure Borrow, a novel framework that realizes Rust-style"},"claims":{"count":4,"items":[{"kind":"strongest_claim","text":"We answer this question affirmatively with Pure Borrow, a novel framework that realizes Rust-style borrowing in Linear Haskell with purity. Notably, it features parallel state mutation with affine mutable references inside pure computation, unlike the IO and ST monads and existing Linear Haskell APIs.","source":"verdict.strongest_claim","status":"machine_extracted","claim_id":"C1","attestation":"unclaimed"},{"kind":"weakest_assumption","text":"That the newly introduced history-based model of borrowing correctly captures the semantics needed to prove safety, leak freedom, and confluence for non-local, splittable borrowing in Linear Haskell.","source":"verdict.weakest_assumption","status":"machine_extracted","claim_id":"C2","attestation":"unclaimed"},{"kind":"one_line_summary","text":"Pure Borrow realizes Rust-style borrowing in Linear Haskell via a library and history-based metatheory, supporting parallel state mutation with affine references in pure code along with safety, leak freedom, and confluence.","source":"verdict.one_line_summary","status":"machine_extracted","claim_id":"C3","attestation":"unclaimed"},{"kind":"headline","text":"Pure Borrow shows that Linear Haskell can support Rust-style non-local borrowing while preserving purity.","source":"verdict.pith_extraction.headline","status":"machine_extracted","claim_id":"C4","attestation":"unclaimed"}],"snapshot_sha256":"c26fbd8f5a564bc53e6d9936470e482019d9967f93f213aab5ee75f6544736e3"},"source":{"id":"2604.15290","kind":"arxiv","version":4},"verdict":{"id":"1639ce01-770b-4640-822c-b27d6f50f299","model_set":{"reader":"grok-4.3"},"created_at":"2026-05-10T08:54:31.346272Z","strongest_claim":"We answer this question affirmatively with Pure Borrow, a novel framework that realizes Rust-style borrowing in Linear Haskell with purity. Notably, it features parallel state mutation with affine mutable references inside pure computation, unlike the IO and ST monads and existing Linear Haskell APIs.","one_line_summary":"Pure Borrow realizes Rust-style borrowing in Linear Haskell via a library and history-based metatheory, supporting parallel state mutation with affine references in pure code along with safety, leak freedom, and confluence.","pipeline_version":"pith-pipeline@v0.9.0","weakest_assumption":"That the newly introduced history-based model of borrowing correctly captures the semantics needed to prove safety, leak freedom, and confluence for non-local, splittable borrowing in Linear Haskell.","pith_extraction_headline":"Pure Borrow shows that Linear Haskell can support Rust-style non-local borrowing while preserving purity."},"integrity":{"clean":true,"summary":{"advisory":0,"critical":0,"by_detector":{},"informational":0},"endpoint":"/pith/2604.15290/integrity.json","findings":[],"available":true,"detectors_run":[],"snapshot_sha256":"c28c3603d3b5d939e8dc4c7e95fa8dfce3d595e45f758748cecf8e644a296938"},"references":{"count":0,"sample":[],"resolved_work":0,"snapshot_sha256":"258153158e38e3291e3d48162225fcdb2d5a3ed65a07baac614ab91432fd4f57","internal_anchors":0},"formal_canon":{"evidence_count":0,"snapshot_sha256":"258153158e38e3291e3d48162225fcdb2d5a3ed65a07baac614ab91432fd4f57"},"author_claims":{"count":0,"strong_count":0,"snapshot_sha256":"258153158e38e3291e3d48162225fcdb2d5a3ed65a07baac614ab91432fd4f57"},"builder_version":"pith-number-builder-2026-05-17-v1"}