À moins que je manque quelque chose, l'interprète ne fournit pas un mécanisme pour faire enregistrer & reconstruisent tout type possible de variable (il y a beaucoup de complexité avec les espaces de noms, les objets, les références à l'un d'entre eux, etc.). La sérialisation est peut-être la plus proche, mais (a) elle n'est pas lisible par l'homme et (b) c'est plus un mécanisme d'interprète qu'un outil pour les développeurs d'applications, donc je ne veux même pas en parler davantage - il y a de meilleures façons pour faire face à cela;)
Cependant, il y a une commande utilisateur qui vous permettra de le faire:
]save (Object) (Filename)
si
]save x h:\temp\x
sauvé à un unicode fichier h: \ temp \ x.dyalog qui pourrait également être édité en utilisant n'importe quel éditeur compatible Unicode (ou même) modifier h: \ temp \ x.dyalog) .
En faisant
]load h:\temp\x
vous pouvez charger cet objet dans l'espace de travail. Vous pouvez également utiliser
]xyz←load h:\temp\x -noname
pour affecter la valeur à xyz
au lieu de charger dans x
à nouveau.
Et il y a plus ... Je suppose que votre question est le résultat de vouloir être en mesure de reproduire certaines données. Connaissez-vous le "système de fichiers de composants" qui offre un moyen facile d'enregistrer des variables comme x
dans des fichiers et de les recharger à partir de là? Exemple:
{x ⎕fappend ⍵ ⋄ ⎕FUNTIE ⍵}'h:\temp\x'⎕FCREATE 0
pour sauver x
puis
{r←⎕fread ⍵,1 ⋄ ⎕FUNTIE ⍵ ⋄ r}'h:\temp\x'⎕FTIE 0
relise. (Disclaimer: ces exemples sont trop simplistes car il n'y a pas de gestion des erreurs dans le cas où le fichier que vous créez existe déjà - généralement cela doit également être pris en compte, mais cela aurait été trop de distraction pour cette petit échantillon ...)
Donc, finalement, je pense que ma véritable préoccupation concerne le contexte de ce problème et le but que vous essayez d'atteindre. Dans toute ma vie APL j'ai rarement vu des choses qui n'étaient "pas faisables" - mais parfois le chemin est différent de ce que vous attendez (connaissant d'autres langues) ...
Merci pour l'information, mais l'idée est de convertir une valeur à un code source APL humaine modifiable pour pouvoir insérer à une fonction de test unitaire, lorsqu'un nouveau scénario problématique a été trouvé. Je veux que ces scénarios de test soient dans le code source APL, pas dans les fichiers, car dans un framework avec lequel je travaille, le code source est bien géré par un système de contrôle de version, alors que les fichiers ne le sont pas. Et je veux qu'il soit modifiable par l'homme, pas seulement en série, pour qu'il soit plus facile de modifier les scénarios de test existants lorsque les arguments/résultats changent. Y at-il un I-Beam pour convertir n'importe quelle forme de sérialisation en code source APL? – Olexa
Veuillez noter que la solution de sauvegarde que j'ai suggérée écrira les expressions dans des fichiers unicode qui peuvent certainement être gérés par des systèmes de contrôle de version. – MBaas