ARITY nombre_de_procedimiento
Devuelve una lista de tres enteros: el número mínimo, número por defecto y número máximo de argumentos del procedimiento cuyo nombre es nombre_de_procedimiento
.
Es un error si no hay un tal procedimiento.
Un máximo de -1 quiere decir que el número de argumentos es ilimitado.
El argumento nombre_de_procedimiento
debe ser una palabra.
Se proporciona ARITY para habilitar introspección de tipos. Por ejemplo, si quieres escribir un programa en FMSLogo que revisa el sintaxis de otro programa de FMSLogo, necesitarías saber cuantos argumentos toma cada procedimiento.
En algunos casos, ARITY puede devolver resultados aparentemente incorrectos. Por ejemplo, la documentación para DESDE dice que acepta exactamente dos argumentos, pero ARITY devuelve que puede aceptar siete. La razón es que DESDE es un procedimiento del directorio de biblioteca que, por razones de conveniencia de implementación, acepta argumentos adicionales y no documentados que tienen valores por defecto y que DESDE se ejecuta a sí mismo recursivamente. Esto no quiere decir que debes proporcionar más que dos argumentos, solo que FMSLogo no queje si lo hagas. Dondequiera que ARITY contradice a la documentación, confía en la documentación.
Es un error si el argumento nombre_de_procedimiento
es el nombre de un procedimiento con una forma especial, como PARA.
No se puede ejecutar estos procedimientos de una manera normal y sus argumentos son procesados de una manera especial.
Entonces, la noción de un mínimo, por defecto o máximo número de argumentos no es relevante.
El ejemplo siguiente demuestra ARITY usado con unas primitivas bien conocidas.
MUESTRA ARITY "AVANZA
[1 1 1]MUESTRA ARITY "PALABRA
[0 2 -1]
El ejemplo siguiente demuestra ARITY usado con un procedimiento que tiene un parámetro requerido, pero que acepta un infinito número de argumentos.
PARA PROCEDIMIENTO.CON.RESTANTE :requerido [:restante]
FIN
MUESTRA ARITY "PROCEDIMIENTO.CON.RESTANTE
[1 1 -1]
El ejemplo siguiente demuestra ARITY usado con un procedimiento que tiene un parámetro optativo que toma por defecto el valor "foo.
PARA PROCEDIMIENTO.CON.OPTATIVO :requerido [:optativo "foo] 1
FIN
MUESTRA ARITY "PROCEDIMIENTO.CON.OPTATIVO
[1 1 2]