2017-10-16 7 views
0

dans q l'opération de fermeture de fichier dyadique est effectuée par '. C'est à dire.q - Application de la fonction arbitraire lors du zippage

l1:("a1";"a2") 
l2:("b1";"b2") 
(l1,'l2)~("a1b1";"a2b2") 

I analyser ce ' comme un opérateur dyadique '[g;l2]g est une projection d'une fonction dyadique sur les listes sur une fonction monadique, par exemple, g:,[l1;]. Donc, si nous voulons effectuer une autre carte en dehors de , pendant l'opération de compression, je voudrais redéfinir g.

Cependant, '[g;l2] ne me donne pas la sortie de la liste attendue, mais retourne func

La question est: comment puis-je appliquer des cartes arbitraires pendant l'opération passer comme un éclair? Par exemple. comment puis-je faire quelque chose comme l1 f' l2 où dans l'exemple f:, mais en général f un opérateur dyadique sur la liste des éléments?

Merci pour l'aide

Répondre

1

Comment appliquer des cartes arbitraires pendant l'opération passer comme un éclair?

Comme ceci:

q)f:{x+y} 
q)f'[10*x;x:til 5] 
0 11 22 33 44 

Si vous aimez la notation infixe, vous pouvez également faire

q)(10*x) f' til 5 
0 11 22 33 44 

Notez que '[g;l1] est un composition. Si vous voulez créer une projection, faites

q)g:,'[l1;] 
q)g l2 
"a1b1" 
"a2b2"