Je cherche à apprendre J et le livre que je me sers dit que c'est la bonne façon de définir une fonction monadiquePourquoi cette fonction J ne fonctionne-t-elle pas?
function =: 3:0 function statements
alors j'ai suivi ce format et écrit le code de pliage. Pouvez-vous me dire pourquoi cela est de lancer une erreur de syntaxe lorsque je tente de l'appeler avec entrée, mais si je viens d'appeler p il retourne 3
h=:>:@[email protected]<[email protected]: :[: NB. gets all integers less than half of the input :[: forces error if used dyadicly
d=:(0&=|)~ h :[: NB. gets list where if one is set that index from h was a factor of the input y :[: forces error if used dyadicly
p=: 3:0 NB. tells us p is a monadic function
t =: d y
a =: i. 1
while. 1<#t
if. t~:0
a =: a, #t
end.
t=: _1 }. t NB. found first mistake wrong bracket but fixing that doesn't fix it
end.
a*1
)
NB. p gets a list of all integers that are factors of y
p 4
| syntax error
| p 4
p
3
NB. h and d run fine
h 4
1 2
h 7
1 2 3
d 7
1 0 0
d 4
1 1
J n'est pas un langage de programmation fonctionnel. C'est un langage de programmation au niveau de la fonction. (Voir l'article Wikipedia sur la programmation au niveau de la fonction pour une discussion de la différence.) –