• Stars
    star
    147
  • Rank 251,347 (Top 5 %)
  • Language Cuda
  • License
    MIT License
  • Created over 2 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A comparison of array languages & libraries: APL, J, BQN, Uiua, Q, Julia, R, NumPy, Nial, Futhark, Dex, Ivy, SaC & ArrayFire.

Array Language & Library Comparisons

image

This is a collection of idioms and small programs in APL, J, BQN, Julia, R, NumPy, Nial, Futhark & SaC.

There are several sites that do these kinds of comparisons:

General Array Language Specific Array Library Specific
Rosetta Code BQN-Dyalog Dictionary ArrayFire-MATLAB-NumPy
Programming-Idioms BQN-Dyalog Dictionary ArrayFire-Eigen
J-Dyalog APL Rosetta ArrayFire-Numpy
Q-APL Dictionary MatX-MATALB-NumPy

Language / Library Websites

Language πŸ’² Main Website Help / Docs Online REPL
πŸ’š Dyalog APL dyalog.com Dyalog Help TryAPL
πŸ’› Kap kapdemo.dhsdevelopments.com Kap Ref Kap Interpreter
πŸ’š J jsoftware.com J NuVoc J Playground
πŸ’š BQN mlochbaum.github.io/BQN BQN Docs BQNPAD
πŸ’š Uiua uiua.org Uiua Docs UiuaPAD
πŸ’š Q πŸ’² code.kx.com/q Q Ref 🚫
πŸ’™ Julia julialang.org Julia Docs Replit
πŸ’™ MATLAB πŸ’² mathworks.com/products/matlab.html MATLAB Help πŸ’²
πŸ’™ NumPy* numpy.org NumPy Docs Replit
πŸ’™ R r-project.org R Docs JDoodle
πŸ’œ Nial nial-array-language.org Nial Dictionary TIO
πŸ’œ Futhark futhark-lang.org Futhark Docs 🚫
πŸ’œ Dex github.com/google-research/dex-lang InDex 🚫
πŸ’œ Ivy pkg.go.dev/robpike.io/ivy Ivy Docs 🚫
πŸ’œπŸ’— SaC sac-home.org SaC Docs 🚫
πŸ’— ArrayFire* arrayfire.com ArrayFire Docs 🚫
πŸ’— MatX* nvidia.github.io/MatX MatX API Ref 🚫
πŸ’— ATen* - ATen Docs 🚫
πŸ’— Eigen* eigen.tuxfamily.org Eigen Dox Godbolt

* Library, not an actual language

  • πŸ’š Main (APL-Family) Array Languages
  • πŸ’› Fringe (APL-Family) Array Languages
  • πŸ’™ Main (Non-APL-Family) Array Languages
  • πŸ’œ Fringe / Research Array Languages
  • πŸ’— Array Compiler Backends / Array Libraries

Comparisons

  1. REPL
  2. Index Base
  3. Axis/Rank Model
    1. LA = Leading Axis
    2. TA = Trailing Axis
    3. AA = Axis Agnostic
  4. Application Model
    1. () = Parentheses
    2. LR = Left to Right
    3. RL = Right to Left
  5. Row-major or Column-Major
1 2 3 4 5
APL πŸ’š 1 (or βŽ•IO) LA/TA RL Row
Kap πŸ’š 0 LA/TA RL Row
J πŸ’š 0 LA RL Row
BQN πŸ’š 0 LA RL Row
Uiua πŸ’š 0 LA RL Row
Q πŸ’› 0 🚫 RL Row
Julia πŸ’š 1 AA () Column
MATLAB πŸ’š 1 LA () Column
NumPy πŸ’š 0 AA () Row
R πŸ’š 1 AA () Column
Nial πŸ’› 1 AA LR Row
Futhark πŸ’› 0 🚫 LR Row
Dex πŸ’› 0 ()
Ivy πŸ’› 1 (or origin) 🚫 RL Row
SaC 🚫 0 LA () Row
ArrayFire 🚫 0 LA () Column
MatX 🚫 0 LA () Row
  1. Length of Array (Leading Axis)
  2. Shape of Array
  3. Rank of Array
  4. Number of Elements in Array
6 7 8 9
APL β‰’ ⍴ ⍴⍴ Γ—/⍴
Kap β‰’ ⍴ ⍴⍴ Γ—/⍴
J # $ $$ */@$
BQN β‰  β‰’ β‰’β‰’ Γ—Β΄β‰’
Uiua ⧻ β–³ ⧻△ ⧻♭
Q count 🚫 🚫 count raze
Julia size(a, 1) size(a) ndims(a) length(a)
MATLAB length(a) size(a) rank(a) numel(a)
NumPy len(a) a.shape np.ndim(a) a.size
R dim(a)[1] dim(a) length(dim(a)) length(a)
Nial first shape shape valence tally
Futhark length 🚫 🚫 flatten |> length
Dex size* 🚫 🚫
Ivy 1 take rho rho rho rho rho ,
SaC shape(a)[0] shape(a) shape(shape(a)) prod(shape(a))
ArrayFire a.dims()[0] a.dims()* a.numdims()* a.elements()
MatX a.Shape()[0] a.Shape() a.Rank() TotalSize(a)

πŸ’› Means the REPL has certain limitations

  • Q REPL has no HOME, END, or any arrows (CTRL or not)
  • Nial REPL has no CTRL left or right arrow
  • Futhark REPL has no HOME, END, or DEL
  • Dex REPL as no UP, DOWN and does not work with rlwrap

If you are using Q, Nial, Futhark or other languages with REPL limitations, you can get around this by invoking with rlwrap. On Linux using the Q REPL:

sudo apt install rlwrap
rlwrap taskset -c 2 ./q

Note that even when using rlwrap, some of the limitations will remain (such as CTRL + arrows).

Other Comparisons

  1. Creating an Identity Matrix
  2. Creating an Iota Matrix
  3. Reversing a Matrix Row-wise, Column-wise and in Memory
  4. Summing a Matrix Row-wise, Column-wise and Down to a Scalar

Leetcode / PWC Problems

# Problem πŸ“Ή
1 πŸ’› P0485 - MCO (Max Consecutive Ones) -
2 πŸ’š P1351 - Count Negatives YouTube Solution
3 πŸ’› P1614 - Maximum Nesting Depth of the Parentheses YouTube Solution | II
4 πŸ’š P1672 - Richest Customer Wealth YouTube Solution
5 πŸ’š P1822 - Sign of the Product of Array YouTube Solution
6 πŸ’› P2319 - Check if Matrix Is X-Matrix YouTube Solution
7 πŸ’› P0674 - LCIS (Longest Continuous Increasing Subsequence) -
8 πŸ’› P00064 - Maixmum Gap -
9 πŸ’› PWC198 P1 - Maximum Gap Count -
  • πŸ’š = All solutions complete
  • πŸ’› = Some solutions missing

Progress

Language 1a 1b 2 3 4 5 6 7 8 9
APL πŸ’š 🚫 πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š
Kap πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š
J πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š
BQN πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š
Uiua πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š
Q πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š
Julia 🚫 πŸ’š πŸ’š 🚫 πŸ’š πŸ’š πŸ’š πŸ”œ πŸ”œ πŸ”œ
MATLAB πŸ”œ 🚫 πŸ’š 🚫 πŸ’š πŸ’š πŸ’š πŸ”œ πŸ”œ πŸ”œ
NumPy πŸ’š πŸ’š πŸ’š 🚫 πŸ’š πŸ’š πŸ’š πŸ”œ πŸ”œ πŸ”œ
R πŸ”œ πŸ’š πŸ’š πŸ”œ πŸ’š πŸ’š πŸ’š πŸ”œ πŸ”œ πŸ”œ
Nial πŸ’š 🚫 πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ”œ πŸ”œ πŸ”œ
Futhark πŸ”œ πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ”œ πŸ”œ πŸ”œ
Dex 🚫 🚫 πŸ’š 🚫 πŸ’š πŸ’š πŸ”œ 🚫
Ivy 🚫 🚫 πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ”œ πŸ”œ πŸ”œ
SaC πŸ”œ πŸ”œ πŸ’š πŸ”œ πŸ’š πŸ’š πŸ’š πŸ”œ πŸ”œ πŸ”œ
ArrayFire πŸ”œ πŸ”œ πŸ’š πŸ”œ πŸ’š πŸ’š πŸ’š πŸ”œ πŸ”œ πŸ”œ
MatX πŸ”œ πŸ”œ πŸ’š πŸ”œ πŸ’š πŸ’š πŸ”œ πŸ”œ πŸ”œ πŸ”œ

More Repositories

1

Algorithms

STL Algorithm Cheat Sheet + example code from STL Algorithm Video Series.
C++
232
star
2

Content

Links, slide decks and other material for conference & meetup talks, podcast appearances and publications.
C++
206
star
3

SICP-2020

Repository for material related to Programming Languages Virtual Meetup coverage of the Structure and Interpretation of Computer Programs textbook.
Racket
157
star
4

LeetCode

Solutions to LeetCode problems in C++, Python, Haskell, APL, Java, Ruby, Rust, Racket, Scala, Kotlin, C#, F#, Clojure, Elixir, Swift, Julia, Smalltalk, Nim, Raku, BQN, Nial, SaC, Futhark, D, Q, J, K, R.
C++
154
star
5

CTfP-2021

Repository for material related to the Programming Languages Virtual Meetup coverage of the Category Theory for Programmers book.
Scala
129
star
6

blackbird

A header-only library that defines common SKI combinators from Combinatory Logic.
C++
52
star
7

jello

A Python script for wrapping Jellyfish (a fork of Jelly) so you can more easily play with the language.
Python
51
star
8

HackerRank

Solutions to HackerRank problems in C++, Python, Java, JavaScript, APL & Haskell.
C++
30
star
9

plr

GitHub repo backing Programming Language Ranking website ⬇️
JavaScript
28
star
10

top10

A selection of 10 problems solved in different programming languages
C++
25
star
11

An-Algorithm-Library

A C++ algorithm library that extends the C++ standard algorithms found in <algorithm> & <numeric>
CMake
22
star
12

kjunior

K Junior is an MIT licensed open source array language written by Arthur Whitney.
C
20
star
13

plgraph

Python
19
star
14

Programming-Language-Meetups

19
star
15

adsp2

HTML
17
star
16

cl-cpp

Code from livestreams of Combinatory Logic in C++
C++
16
star
17

CodeChef

Solutions to CodeChef problems in C++, Java, Python, Haskell, BASH and Rust.
C++
16
star
18

7L7W-2022

Repository for material related to the Programming Languages Virtual Meetup coverage of the Seven Languages in Seven Weeks book.
Ruby
15
star
19

scrabble

A scrabble game that helps you train.
Python
15
star
20

Advent-of-Code-2022

Solutions to Advent of Code 2022 in APL & BQN (and Python if I'm lazy)
BQN
14
star
21

rust-tx

A exploration of the Rust language through implementing an APL-inspired Tensor library.
Rust
13
star
22

racket-algorithms

A package containing many useful algorithms (borrowed from many other programming languages).
Racket
12
star
23

jellyfish

A fork of Jelly (recreational programming language inspired by J) that fixes bugs I have run into and extends the language.
Python
10
star
24

Advent-of-Code-2021

Solutions to Advent of Code 2021 in APL
APL
9
star
25

katas

BQN
9
star
26

city-strides-hacking

Python scripts that build optimal routes for node collection
HTML
8
star
27

useful_function_objects

Some useful function objects.
C++
7
star
28

rust-iterx

Rust library that provides several functions on the Iterator trait not found in std::iter or Itertools.
Rust
6
star
29

Pharo-NDArray

Library for n-dimensional arrays and common array programming language algorithms and combinators.
Smalltalk
6
star
30

dovekie

A library that defines common SKI combinators from Combinatory Logic.
Python
6
star
31

bqn-code

A compilation of BQN solutions to various coding challenges.
BQN
6
star
32

codereport.github.io

SCSS
5
star
33

topcoder

C++
5
star
34

Hoogle-Translate

4
star
35

The_Q_Programming_Language

4
star
36

Cplusplus

C++
4
star
37

ranges-examples

C++
4
star
38

crafting-interpreters

Challenges and code for lox/clox from the Crafting Interpreters book by Bob Nystrom
Rust
4
star
39

maya

A small GPU-accelerated, combinator-enabled algorithm-fusing array programming language.
C++
4
star
40

cl

www.combinatorylogic.com
HTML
4
star
41

mex

A playground for exploring array language & combinator ideas.
C++
3
star
42

LearningList

3
star
43

Data-Structures

3
star
44

Codeforces

C++
3
star
45

HackerEarth

C++
3
star
46

kap

This is a fork of the open source Kap language hosted at https://codeberg.org/loke/array/
Kotlin
3
star
47

bluebird

A library that defines common SKI combinators from Combinatory Logic.
Rust
2
star
48

ki

C++
2
star
49

birds-cpp

An implementation of the combinators from combinatory logic in C++
C++
2
star
50

Versus

C++
2
star
51

Google-Code-Jam

Java
2
star
52

rust-parallel-scans

Playground for scans in Rust
Rust
2
star
53

mastermind

The game of MasterMind in different languages
BQN
2
star
54

moar_functional_fahller

Some small improvements to the C++23 pairwise + transform example from BjΓΆrn Fahller's code::dive 2023 talk: Moar Functional with C++23
C++
2
star
55

Advent-of-Code-2023

Solutions to advent of code in BQN & Python
BQN
2
star
56

Pharo-Leetcode

Smalltalk
1
star
57

Advent-of-Code-2020

Solutions to Advent of Code 2020 in C++, APL, Smalltalk & Haskell
C++
1
star
58

combinators

Haskell
1
star
59

functions-and-operators

Swift
1
star
60

PharoAlgorithms

Smalltalk
1
star
61

tacittalk

Tacit Talk is a podcast about programming languages, combinators, algorithms and more!
HTML
1
star
62

Dyalog-Competition

APL
1
star
63

papers

Repository for papers
TeX
1
star
64

RealWorldHaskellExercises

Haskell
1
star
65

meeting-notes

BQN
1
star
66

runforthefunofit

HTML
1
star
67

Pharo-Advent-of-Code-2020

Smalltalk
1
star
68

cleanblog

HTML
1
star
69

realm-of-racket

Racket
1
star
70

LEWG-numeric-algorithms-task-force

1
star
71

hw

TeX
1
star
72

FM2GP-2024

Repository for material related to the Programming Languages Virtual Meetup coverage of From Mathematics to Generic Programming
1
star