⚠️ ⚠️ ⚠️ THIS PROJECT IS ON PAUSE AT THE MOMENT⚠️ ⚠️ ⚠️
J is an array programming language created by Ken Iverson and Roger Hui (see image below).
This is a fork of jsoftware/jsource
and we will be porting it to C++20.
The motivation for this is to learn about how Ken Iverson / Roger Hui implemented the J language (and similarly APL as J is the successor to APL). The end goal is to learn as much as possible.
If you would like to try J without building from source, check out this site: http://tryj.freeddns.org/
- Reduce complexity of build options
- Compile with GCC 10+
- Compile with Clang 11+
- Remove all (most) of the macros
- Clang-format the code base
- Clang-tidy the code base
- Set up CI (Buildkite)
- Set up Code Coverage
- Set up badges
- Get both build / tests running in parallel
- Parallel build (for free off of zhihaoy branch)
- Parallel tests
- Monitor compile & run time perf while refactoring
- Learn to not use mouse
Calculating the first 10 odd numbers:
Language | Code | Runnable Link |
---|---|---|
J | 1+2*i.10 |
j playground |
APL | ¯1+2×⍳10 |
TryAPL |
R | -1+2*seq(10) |
|
Python | [1 + 2 * i for i in range(10)] |
Godbolt |
Haskell | map (1+) $ map (2*) [0..9] |
OneCompiler |
Haskell | map ((+1) . (*2)) [0..9] |
OneCompiler |
Haskell | take 10 [1,3..] |
OneCompiler |
C++ | transform(iota(0, 10), [](auto e) { return e * 2 + 1; }) |
Godbolt |
C# | Enumerable.Range(0, 10).Select((int i) => { return i * 2 + 1; }) |
|
Java | IntStream.range(0, 10).map(x -> x * 2 + 1).toArray(); |
|
Ruby | (0..9).map { |i| i * 2 + 1 } |
Try It Online |
For building this repository, please see CONTRIBUTING.md
.