whence for J
whence =: verb define | |
select. 4!:0 < y | |
case. _2 do. 'invalid name' | |
case. _1 do. 'name not defined' | |
case. 0;1;2;3 do. | |
index =. 4!:4 < y | |
select. * >: index | |
case. 0 do. 'name defined locally' | |
case. 1 do. > index { 4!:3'' | |
end. | |
end. | |
) | |
whence '' | |
whence 'not_defined' | |
whence 'in_interpreter' NB. define this in interpreter first | |
whence 'whence' |
err1 =. 'invalid name'"_ | |
err2 =. 'name not defined'"_ | |
err3 =. 'name defined locally'"_ | |
find_name =. [: > (4!:3'') {~ ] | |
NB. helper; I didn't want to make everything one line | |
whence2 =. [: err3`find_name@.(* @ >:) [: 4!:4 < | |
whence =: err1`err2`whence2@.([: >: [: * [: >: [: 4!:0 <) | |
whence '' | |
whence 'not_defined' | |
whence 'in_interpreter' NB. define this in interpreter first | |
whence 'whence' |
whence =: verb define | |
if. _2 = 4!:0 < y do. | |
'invalid name' | |
return. | |
elseif. _1 = 4!:0 < y do. | |
'name not defined' | |
return. | |
end. | |
index =. 4!:4 < y | |
if. _1 = index do. | |
'name defined locally' | |
return. | |
end. | |
> index { 4!:3'' | |
) | |
whence '' | |
whence 'not_defined' | |
whence 'in_interpreter' NB. define this in interpreter first | |
whence 'whence' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment