J and APL support (and encourage) a certain form of programming without error handling or library code reuse. The alternative wisdom goes against typical programming but it works together.

Consider taking successive differences: it is hardly obvious that

succ_diff

is preferable to

2 -~/\ ]

Now,

2 -~/\ (0\$0)

will fail silently, but one can discern what inputs are acceptable by inspection.

This situation is common in practice, consider the example monotonically_increasing:

def monotonically_increasing(a):
max_value = 0
for i in range(len(a)):
if a[i] > max_value:
max_value = a[i]
a[i] = max_value

This is in fact worse than >. /\ or |\; all fail on an empty list but only the APL derivatives make this evident.

# Explorative Programming

Avoiding rigorous error handling in procedures is most acceptable for exploratory programming. It is preferable to use a one-off idiom that suits your data rather than a carefully written procedure; the procedure might be thrown away as you work.

I claim this functional, terse style is in fact necessary for exploratory programming. Concise, self-explanatory programs balance what is lost in loose error handling. Those used to building systems may find this objectionable but the style works together.