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.
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.
-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 #-}
To get in touch, you can join our
server
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.
-XLinearTypesIf 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.
examples/ folder.-XLinearTypes.–
Linear base is maintained by Tweag.
To contribute please see the Design Document for instructions and advice on making pull requests.
A great first step is to join our
server
See the Licence file.
Copyright © Tweag Holding and its affiliates.
Haskell
99.4%
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.
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.
-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 #-}
To get in touch, you can join our
server
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.
-XLinearTypesIf 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.
examples/ folder.-XLinearTypes.–
Linear base is maintained by Tweag.
To contribute please see the Design Document for instructions and advice on making pull requests.
A great first step is to join our
server
See the Licence file.
Copyright © Tweag Holding and its affiliates.
Haskell
99.4%