Esta es una pequeña función de ejemplo que compara dos listas y retorna verdadero si son iguales:
1 let rec compara l1 l2 =Línea 1: Definimos la función compara con dos paremetros l1 y l2, además le indicamos que es una función recursiva (rec).
2 match l1, l2 with
3 | h1 :: t1, h2 :: t2 -> if h1 != h2 then false else compara t1 t2
4 | [], [] -> true
5 | _ -> false
Línea 2: Match es algo parecido al switch del C pero mucho más potente, hacemos un match con las dos listas.
Línea 3: Comparamos si la cabecera de las dos listas (h1 y h2) son diferentes en cuyo caso devolvemos un falso. Si no, llamamos recursivamente la función con la cola de las dos listas (t1, t2).
Línea 4: Si las dos listas han llegado vacias hasta aquí es que son iguales.
Línea 5: Para el resto de casos (el tamaño de las listas es diferente) retornamos falso.
Espero que os haya entrado el gusanillo de mirar más cosas sobre OCaml.
4 comentarios:
Interesante, pero no me ha quedado claro donde se establece que h1 es la cabecera de l1 y t1 la cola de h1.
Si tengo una lista [1; 2; 3; 4] al hacer cabecera :: cola, cabecera contendra 1 y la cola [2; 3; 4]. Es asi gracias a los dos puntos dobles.
Me ha quedado una duda y no es precisamente del lenguaje. Cuando dice Linia te estas refiriendo a Linea o estoy entendiendo mal el texto.
Saludos
Eso es que se me escapa el catalán, ahora mismo lo arreglo.
Publicar un comentario