Compiling JOne of the FAQs: Can J be compiled?
The first, most obvious adversary for compliation is Do (".), J's runtime evaluation of arbitrary (at runtime computed) strings.
The second problem is J's interleaved parsing and evaluation. Consider this:a=:1 b=:+ c=: monad define a =: < y ) a b c 99What should the result be? 100? A boxed 99? An error?
You will certainly want to (re)read DoJ, II.E, Parsing and Execution in the context of this example, and will come up with other interesting variations on this theme.