Popularity
7.3
Declining
Activity
3.8
Declining
22
2
9
Monthly Downloads: 161
Programming language: Haskell
License: BSD 3-clause "New" or "Revised" License
fin alternatives and similar packages
Based on the "Data" category.
Alternatively, view fin alternatives based on common mentions on social networks and blogs.
-
semantic-source
Parsing, analyzing, and comparing source code across many languages -
code-builder
Packages for defining APIs, running them, generating client code and documentation. -
text
Haskell library for space- and time-efficient operations over Unicode text. -
compendium-client
Mu (μ) is a purely functional framework for building micro services. -
cassava
A CSV parsing and encoding library optimized for ease of use and high performance -
resource-pool
A high-performance striped resource pooling implementation for Haskell -
primitive
This package provides various primitive memory-related operations. -
discrimination
Fast linear time sorting and discrimination for a large class of data types -
dependent-sum
Dependent sums and supporting typeclasses for comparing and displaying them -
reflection
Reifies arbitrary Haskell terms into types that can be reflected back into terms -
dependent-map
Dependently-typed finite maps (partial dependent products) -
streaming
An optimized general monad transformer for streaming applications, with a simple prelude of functions -
orgmode-parse
Attoparsec parser combinators for parsing org-mode structured text! -
text-icu
This package provides the Haskell Data.Text.ICU library, for performing complex manipulation of Unicode text. -
scientific
Arbitrary-precision floating-point numbers represented using scientific notation
Clean code begins in your IDE with SonarLint
Up your coding game and discover issues early. SonarLint is a free plugin that helps you find & fix bugs and security issues from the moment you start writing code. Install from your favorite IDE marketplace today.
Promo
www.sonarlint.org
Do you think we are missing an alternative of fin or a related project?
README
fin and vec
Vec
vec
provides few approache to work with Vec
:
naive
: explicit recusion- no need to keep constraints around for most functions
- simple
- slow
pull
:Vec n a
represented asFin n -> a
- Fuses well
- Some code is hard to write (e.g.
Traversable
) - relatively simple
inline
, usingInlineInduction
:- exploits how GHC dictionary resolution works
- makes code to unroll completely for staticaly known sizes
- fast in that case
Dependencies
And with dependency flags turned off:
Benchmarks: dotProduct
list
version sets the baseline, built-in fusion seems to kick in.vector
andunboxed
vector are 3x slower.- this library, naive
vec
is even slower Data.Vec.Pull
approach is slower, except- that without conversions it's up to speed with
vector
inline
(usingInlineInduction
over size) is faster than list version.
benchmarking dot product/list
time 23.73 ns (23.61 ns .. 23.88 ns)
1.000 R² (1.000 R² .. 1.000 R²)
mean 23.69 ns (23.58 ns .. 23.89 ns)
std dev 450.1 ps (292.0 ps .. 731.3 ps)
variance introduced by outliers: 27% (moderately inflated)
benchmarking dot product/vector
time 80.74 ns (80.16 ns .. 81.42 ns)
0.999 R² (0.999 R² .. 1.000 R²)
mean 80.83 ns (80.23 ns .. 82.21 ns)
std dev 2.760 ns (1.657 ns .. 4.830 ns)
variance introduced by outliers: 53% (severely inflated)
benchmarking dot product/unboxed
time 79.95 ns (79.34 ns .. 80.74 ns)
0.999 R² (0.999 R² .. 1.000 R²)
mean 80.44 ns (79.61 ns .. 82.51 ns)
std dev 4.278 ns (2.029 ns .. 7.869 ns)
variance introduced by outliers: 74% (severely inflated)
benchmarking dot product/vec
time 130.2 ns (129.0 ns .. 131.6 ns)
0.999 R² (0.999 R² .. 1.000 R²)
mean 130.1 ns (129.1 ns .. 131.7 ns)
std dev 4.185 ns (3.108 ns .. 5.425 ns)
variance introduced by outliers: 49% (moderately inflated)
benchmarking dot product/pull
time 245.3 ns (245.1 ns .. 245.5 ns)
1.000 R² (0.999 R² .. 1.000 R²)
mean 246.3 ns (244.7 ns .. 254.1 ns)
std dev 9.924 ns (409.7 ps .. 22.69 ns)
variance introduced by outliers: 59% (severely inflated)
benchmarking dot product/pull'
time 71.18 ns (70.73 ns .. 71.64 ns)
1.000 R² (1.000 R² .. 1.000 R²)
mean 70.79 ns (70.44 ns .. 71.30 ns)
std dev 1.397 ns (925.3 ps .. 2.095 ns)
variance introduced by outliers: 27% (moderately inflated)
benchmarking dot product/inline
time 20.91 ns (20.64 ns .. 21.25 ns)
0.999 R² (0.998 R² .. 0.999 R²)
mean 21.12 ns (20.90 ns .. 21.37 ns)
std dev 784.4 ps (575.5 ps .. 1.107 ns)
variance introduced by outliers: 60% (severely inflated)