(april-c "{⍴∪,(3⍴2*8)⊥3 1 2⍉⍵}" (opticl:read-png-file "/path/to/image.png"))
This snippet uses the opticl library to load a PNG file, and then uses April to count the number of unique colors in the image. Consider the amount of code this would take in CL.
(defun april-reader (stream char)
(declare (ignore char))
`(april ,(read stream t nil t)))
(set-macro-character #\⎕ #'april-reader) (april "apl code") ; and april-f
(april (with (stuff)) "apl code") ; and april-f
(april-c "apl code" (input))
(april-c (with (stuff)) "apl code" (input))But April has many ways of passing options and external data for the compiled code to operate upon, and implementing a reader macro system that would support all those parameters would be complicated and require developers to learn a bunch of new syntax in order to use April with reader macros.
(april-load #P"/path/to/code.apl")
Then you can have files of pure APL code with no Lisp hanging around.
I don't really read APL - but isn't this just a map/reduce over the pixels? - maybe (length (remove-duplicates 'pixel-data)) or some such?