ConsWorld

Este mundo permite que experimente com listas recursivas, pois foi introduzido primeiro em Lisp. É muito similar ao BatWorld, mas deve escrever funções recursivas que funcionem em [!python|java]cadeias recursivas. Desde que [!thelang] não fornece tal contrução nativamente, o ConsWorld define listas recursivas do tipo RecList.[/!] [!scala]listas de inteiros (List[Int]).[/!]

Qualquer lista dada é ou a lista vazia (noted [!scala]Nil[/!][!java]null[/!][!python]None[/!]), ou um inteiro seguido de uma lista. Se uma lista não é vazia, pode recuperar o primeiro inteiro dela com list.head e a lista a conter os demais parâmetros com list.tail. Obviamente, a lista vazia não tem head nem tail, portanto, tentar acessar estes elementos vai resultar numa mensagem de erro (desagradável).

Para construir a sua própria lista, precisa concatenar um head e um tail como segue: [!java|python]cons(head, tail)[/!] [!scala]head::tail Observe que :: é um operador genérico em Scala para construir listas.[/!]

Logo, a resumir, pode resolver cada exercício desta lição com as seguintes construções.