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.
[!java]null[/!][!scala]Nil[/!][!python]None[/!]
l
l.head
l.tail
valor
e uma
lista
: [!java|python]cons(value, list)[/!] [!scala]
value::list[/!]