Compact Verb Definitions
In APL literature a compact one-line definition style was used with α and ω for x and y arguments. It was implemented with a helper "DEF" mode in the session. Here's a J variant of such mode.
«defn.ijs»= Compact Verb Definitions
dltb=: #~ ([: (+./\ *. +./\.) ' '&~:)
splitstring=: #@[ }.each [ (E. <;.1 ]) ,
defn=: 1 : 0
for_i. <;._2 (0 : 0) do.
'nm df'=. '=:' splitstring >{.'NB.' splitstring >i
'mn dy'=. dltb each 2 {. ' : ' splitstring df
if. 0=#dy do. (nm)=: 3 : mn
elseif. 0=#mn do. (nm)=: 4 : dy
elseif. do. (nm)=: 3 : (mn;':';dy) end.
end.
i.0 0
)
Note the "defn" mode works both in scripts and in interactive sessions.
Examples:
'Arithmetic' defn NB. enter "defn" mode
add=: : x+y NB. addition
pow=: ^y : x ^ y NB. power
sqr=: y pow 2
sqrt=: y pow 0.5
)
NB. exit the modewhich results in the following entries
add 4 : 'x+y' pow 3 : 0 ^y : x ^ y ) sqrt 3 : 'y pow 0.5' sqrt 2 1.41421
See Also
Guides/Defining Verbs - an introductory guide
Essays/Direct Definition - a dedicated text for direct definitions
Essays/Trains - origins and evolution of trains
Contributed by OlegKobchenko
