<commit_before>## apltail: An APL Compiler targeting a Typed Array Intermediate Language

This software implements an APL compiler in Standard ML. The compiler
targets a [typed array intermediate language](http://www.elsman.com/pdf/array14_final.pdf) [1]. The
executable also contains an interpreter for TAIL and a compiler from
TAIL into C.

See [the compilation scheme](doc/comp.md).

See also the [coverage page](doc/coverage.md).

## An example

Consider the following program:

```apl
f ← {5+⍵}    ⍝ Function adding 5 to its argument (⍵)
+/ f ⍳ 30    ⍝ Apply f to the vector 1..30 and
             ⍝  sum up the elements in the resulting vector
```

Here is what happens when the program is compiled and executed:

    bash-3.2$ ./aplt -p_tail lib/prelude.apl tests/test.apl
    [Reading file: lib/prelude.apl]
    [Reading file: tests/test.apl]
    Resulting program:
    let v0:<int>30 = iotaV(30) in
    i2d(reduce(addi,0,eachV(fn v1:[int]0 => addi(5,v1),v0)))
    Evaluating
    Result is [](615.0)

## Another example

Consider the program

```apl
diff ← {1↓⍵−¯1⌽⍵}
signal ← {¯50⌈50⌊50×(diff 0,⍵)÷0.01+⍵}
+/ signal ⍳ 100
```<commit_msg>statistics in README<commit_after>## apltail: An APL Compiler targeting a Typed Array Intermediate Language

This software implements an APL compiler in Standard ML. The compiler
targets a [typed array intermediate language](http://www.elsman.com/pdf/array14_final.pdf) [1]. The
executable also contains an interpreter for TAIL and a compiler from
TAIL into C.

See [the compilation scheme](doc/comp.md).

See also the [coverage page](doc/coverage.md).

## Statistics

[![Issue Stats](http://issuestats.com/github/melsman/apltail/badge/pr)](http://issuestats.com/github/melsman/apltail)
[![Issue Stats](http://issuestats.com/github/melsman/apltail/badge/issue)](http://issuestats.com/github/melsman/apltail)
[![Build Status](https://travis-ci.org/melsman/apltail.svg?branch=master)](https://travis-ci.org/melsman/apltail)

## An example

Consider the following program:

```apl
f ← {5+⍵}    ⍝ Function adding 5 to its argument (⍵)
+/ f ⍳ 30    ⍝ Apply f to the vector 1..30 and
             ⍝  sum up the elements in the resulting vector
```

Here is what happens when the program is compiled and executed:

    bash-3.2$ ./aplt -p_tail lib/prelude.apl tests/test.apl
    [Reading file: lib/prelude.apl]
    [Reading file: tests/test.apl]
    Resulting program:
    let v0:<int>30 = iotaV(30) in
    i2d(reduce(addi,0,eachV(fn v1:[int]0 => addi(5,v1),v0)))
    Evaluating
    Result is [](615.0)

## Another example

Consider the program

```apl
diff ← {1↓⍵−¯1⌽⍵}
signal ← {¯50⌈50⌊50×(diff 0,⍵)÷0.01+⍵}
+/ signal ⍳ 100
```
{'fraction_non_alphanumeric': 0.13943028485757122, 'fraction_numerical': 0.03223388305847077, 'mean_word_length': 3.8704379562043796, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 7, 'https://': 2, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1231028', 'n_tokens_mistral': 1079, 'n_tokens_neox': 1003, 'n_words': 293}