Linear base is a standard library for developing applications with linear
types. It is named linear-base to be an analog to the original base
package that ships with GHC.
The purpose of linear-base is to provide the minimal facilities you need to
write practical Linear Haskell code, i.e., Haskell code that uses the
-XLinearTypes language extension.
Motivation
Why do you need linear-base to write linear projects?
Data types, functions and classes in base are not linear types
aware. For instance, if n is a linearly-bound Int, the RHS of
a definition cannot write n + 1 — this will not type check. We
need linear variants of Num, Functors, Monads, ($), etc.
This library exports new abstractions that leverage linear types
for resource safety or performance. For example, there are new APIs
for file and socket I/O as well as for safe in-place mutation of
arrays.
Getting started
-XLinearTypes is released with GHC 9, and linear-base is released
on Hackage and Stackage.
All source files with linear types need a language extension pragma at
the top:
{-# LANGUAGE LinearTypes #-}
User Guide
If you already know what -XLinearTypes does and what the linear
arrow a %1-> b means, then read the User Guide and explore the
examples/ folder to know how to use linear-base.
You can also find a table comparing base and linear-base typeclasses
here.
Learning about -XLinearTypes
If you're a Haskeller who hasn't written any Linear Haskell code, don't fear!
There are plenty of excellent resources and examples to help you.
请发表评论