When comparing Hy vs J, the Slant community recommends J for most people. In the question“What are the best (productivity-enhancing, well-designed, and concise, rather than just popular or time-tested) programming languages?” J is ranked 34th while Hy is ranked 43rd. The most important reason people chose J is:
3 classes of operators (verbs, adverbs, and conjunctions) with verbs the most basic function that take either 1 or 2 (infix) parameters. Operators allow function composition with a minimum of parentheses.
Ranked in these QuestionsQuestion Ranking
Pros
Pro Python interop
Hy compiles to Python's abstract syntax trees. Python can import Hy modules, and Hy can import Python modules.
Pro Easier to read
Distinguished between arrays (or vectors) and function calls by using [] and (), respectively.
Pro Copyfree and open source
Uses the MIT (expat) license.
Pro Every function is an operator
3 classes of operators (verbs, adverbs, and conjunctions) with verbs the most basic function that take either 1 or 2 (infix) parameters. Operators allow function composition with a minimum of parentheses.
Pro Simpler Imperative language constructs as failback to functional programming
J also supports multiline functional definitions similar to BASIC/Pascal. Including error handling.
Pro Compiled language speed from interpreted language.
Each built in operator is a C/asm function, and special code further optimizes some operator combinations. Result is optimized C speed from quick parsing. Array orientation parses and compiles a function once, and applies it to all array items.
Pro 25 year old language, with core unchanged in last 10 years
Still actively developed, but most recent changes have been in libraries and IDE and platform support.
Language is considered "perfected"... though not quite.
Pro Language reference has simple one page index
Complete core programming functional tools allow writting programs and libraries without imports.
Pro No operator precedence rules
(... within each of the 3 operator classes) makes reading code easier. Very simple parsing rules.
Cons
Con Syntax is pure madness
quicksort=: (($:@(<#[), (=#[), $:@(>#[)) ({~ ?@#)) ^: (1<#)
![Vetted.ai illustration](/images/ai/vetted-illustration.png)