jacinda: Functional, expression-oriented data processing language

[ agpl, data, interpreters, language, library, program, text ] [ Propose Tags ]

APL meets AWK. A command-line tool for summarizing and reporting, powered by Rust's regex library.


[Skip to Readme]

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.1.0.0, 0.2.0.0, 0.2.1.0, 0.3.0.0, 0.3.1.0, 1.0.0.0, 1.1.0.0, 1.2.0.0, 2.0.0.0, 2.0.1.0, 2.0.2.0
Change log CHANGELOG.md
Dependencies array, base (>=4.11.0.0 && <5), bytestring (>=0.11.0.0), containers, jacinda, microlens, microlens-mtl (>=0.1.8.0), mtl, optparse-applicative, prettyprinter (>=1.7.0), recursion (>=1.0.0.0), regex-rure, text, transformers, vector [details]
License GPL-3.0-only
Author Vanessa McHale
Maintainer vamchale@gmail.com
Revised Revision 2 made by vmchale at 2022-08-16T11:42:18Z
Category Language, Interpreters, Text, Data
Bug tracker https://github.com/vmchale/jacinda/issues
Source repo head: git clone https://github.com/vmchale/jacinda
Uploaded by vmchale at 2022-01-09T19:29:35Z
Distributions NixOS:2.0.2.0
Executables ja
Downloads 551 total (29 in the last 30 days)
Rating 2.25 (votes: 2) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
All reported builds failed as of 2022-01-09 [all 2 reports]

Readme for jacinda-0.1.0.0

[back to package description]

Jacinda is a functional, expression-oriented data processing language, complementing AWK.

Installation

From Source

First, install Rust's regex library.

If you have cabal and GHC installed (perhaps via ghcup):

cabal install jacinda

Documentation

The manpages document the builtins and provide a syntax reference.

SHOCK & AWE

ls -l | ja '(+)|0 {ix>1}{`5:i}'
curl -sL https://raw.githubusercontent.com/nychealth/coronavirus-data/master/latest/now-weekly-breakthrough.csv | \
    ja ',[1.0-x%y] {ix>1}{`5:f} {ix>1}{`11:f}' -F,

Further Advantages

PERFORMANCE

Linux + x64

benchmarking bench/ja '(+)|0 {%/Bloom/}{1}' -i /tmp/ulysses.txt
time                 8.110 ms   (7.926 ms .. 8.304 ms)
                     0.996 R²   (0.993 R² .. 0.998 R²)
mean                 8.470 ms   (8.278 ms .. 8.771 ms)
std dev              693.0 μs   (437.4 μs .. 1.008 ms)
variance introduced by outliers: 47% (moderately inflated)

benchmarking bench/original-awk '/Bloom/ { total += 1; } END { print total }' /tmp/ulysses.txt
time                 13.24 ms   (13.04 ms .. 13.39 ms)
                     0.999 R²   (0.998 R² .. 1.000 R²)
mean                 13.39 ms   (13.29 ms .. 13.49 ms)
std dev              256.0 μs   (197.8 μs .. 380.7 μs)

benchmarking bench/gawk '/Bloom/ { total += 1; } END { print total }' /tmp/ulysses.txt
time                 7.804 ms   (7.706 ms .. 7.931 ms)
                     0.996 R²   (0.991 R² .. 0.999 R²)
mean                 7.668 ms   (7.572 ms .. 7.783 ms)
std dev              303.4 μs   (229.7 μs .. 442.5 μs)
variance introduced by outliers: 17% (moderately inflated)

benchmarking bench/mawk '/Bloom/ { total += 1; } END { print total }' /tmp/ulysses.txt
time                 3.179 ms   (3.099 ms .. 3.240 ms)
                     0.997 R²   (0.995 R² .. 0.998 R²)
mean                 3.213 ms   (3.178 ms .. 3.270 ms)
std dev              148.9 μs   (97.11 μs .. 267.6 μs)
variance introduced by outliers: 29% (moderately inflated)

benchmarking bench/busybox awk '/Bloom/ { total += 1; } END { print total }' /tmp/ulysses.txt
time                 12.61 ms   (12.43 ms .. 12.77 ms)
                     0.999 R²   (0.998 R² .. 1.000 R²)
mean                 12.98 ms   (12.86 ms .. 13.09 ms)
std dev              303.1 μs   (234.5 μs .. 396.2 μs)