Ejemplo de sintaxis:
Ejemplo de Sintaxis de una función recursiva:
Como se puede observar ambas declaraciones son válidas, una esta hecha desde la consola de Julia, mientras que la otra esta en un texto plano.
Julia puede reconocer los tipos de los argumentos de las funciones, pero de igual manera podemos especificar un tipo de dato concreto.
Ejemplo sin declarar los datos:
Como se puede observar el parámetro a funciona como una matriz, siempre y cuando a esta función le pasemos una matriz de argumento, si esto no ocurriese nos imprimiría un error.
Ejemplo con los tipos declarados:
Aqui podemos ver que explícitamente nos pide dos Array de dimension 2, de tipo Int64, esto hace referencia a una matriz de enteros.
Si aun no entiende bien los tipos de datos, recomiendo hechar un vistazo a esa parte primero Articulo variables en julia.
¿Paso por referencia ó por valor?
Los argumentos de las funciones de Julia siguen una convención a veces llamada "pasar por compartir", lo que significa que los valores no se copian cuando se pasan a las funciones. Los argumentos de función en sí mismos actúan como nuevos enlaces de variables (nuevas ubicaciones que pueden referirse a valores), pero los valores a los que se refieren son idénticos a los valores pasados. Las modificaciones a los valores mutables (como las matrices) realizadas dentro de una función serán visibles para la persona que llama. Este es el mismo comportamiento que se encuentra en Scheme, la mayoría de Lisps, Python, Ruby y Perl, entre otros lenguajes dinámicos.
En resumen, pasar por compartir funciona como pasar por referencia, pero no se puede cambiar a qué valor se refiere un enlace(espacio en memoria) en el alcance de la llamada reasignando a un argumento en la función que se llama; si reasigna un argumento, el enlace de la persona que llama no ha cambiado.