2011-12-29 18 views
6

( Mathematica versión: 8.0.4)Sobre el uso de Internal`Bag, y cualquier documentación oficial?

lst = Names["Internal`*"]; 
Length[lst] 
Pick[lst, StringMatchQ[lst, "*Bag*"]] 

da

293  
{"Internal`Bag", "Internal`BagLength", "Internal`BagPart", "Internal`StuffBag"} 

La guía Mathematica para la programación Por Michael Trott, página 494 dice en el contexto interno

"pero similar al contexto Experimental, no existe garantía de que el comportamiento y la sintaxis de las funciones aún estén disponibles en las versiones posteriores de Mathematica "

Además, aquí es una mención de Bag funciones:

Implementing a Quadtree in Mathematica

Pero desde que he visto varios expertos Mathematica aquí sugieren Internal`Bag funciones y los utilizan ellos mismos, estoy asumiendo que sería una especie de seguro para usarlos en el código real? y si es así, tengo la siguiente pregunta:

¿Dónde puedo encontrar una descripción más oficial de estas funciones (la API, etc.) como las que se encuentran en el centro de documentación? No hay nada ahora acerca de ellos ahora

??Internal`Bag 
Internal`Bag 
Attributes[Internal`Bag]={Protected} 

Si he de empezar a usarlos, me resulta difícil de aprender sobre nuevas funciones con sólo mirar algunos ejemplos y ensayo y error para ver lo que hacen. Me pregunto si alguien aquí podría tener un documento más completo y autónomo sobre el uso de estos, describir la API y otros más de lo que ya existe o un enlace a dicho lugar.

+9

?? La descripción oficial * es * el llamado "Centro de documentación" (también conocido como Ayuda). Si no hay nada allí, entonces no hay otro lugar estructurado. Ha sucedido antes: los tokens front-end se introdujeron alrededor de Mathematica 3, pero solo (parcialmente) documentados mucho más tarde. Entonces, solo espere una década más o menos y es probable que WRI lo documente. Hasta entonces, debes confiar en desarrolladores amables como Dan Lichtblau et. Alabama. para arrojar luz a la oscuridad. –

+3

He sido culpable de recomendar funciones no documentadas sin también presentar la advertencia de su uso.Es difícil no entusiasmarse con el último "truco" que aprendo y comenzar a usarlo de inmediato, pero puede ser imprudente, y no debería alentar a otros a seguir esta práctica. Lamentablemente, una serie de características y funciones interesantes caen en esta categoría. Espero que pronto haya una palabra oficial sobre funciones como '* Bag *'. –

+9

Dudo que haya algo oficial sobre eso. Pero han existido por al menos una docena de años, y no van a desaparecer. –

Respuesta

0

El contexto Internal es exactamente lo que su nombre indica: destinado para uso interno de los desarrolladores de Wolfram.

Esto significa, entre otras cosas, las siguientes cosas tienen cualquier cosa que pueda encontrar allí:

  • Lo más probable es que no será capaz de encontrar ninguna documentación oficial sobre él, ya que no está destinado a ser usado por el público
  • No es necesariamente tan robusto con argumentos inválidos. (El bloqueo del kernel puede ocurrir fácilmente en algunos de ellos).
  • La API puede sufrir modificaciones sin previo aviso.
  • La función puede desaparecer por completo sin previo aviso.

Ahora, en la práctica, algunos de ellos pueden ser razonablemente estables, pero le recomiendo encarecidamente alejarse de ellos. El uso de API indocumentadas puede dejarlo con mucho dolor y una desagradable sorpresa en el futuro.

Cuestiones relacionadas