Este mundo permite que você experimente com listas recursivas, pois ele foi
introduzido primeiro em Lisp. É muito similar ao BatWorld, mas você deve
escrever funções recursivas que funcionem em [!python|java]strings
recursivas. pois [!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, você pode recuperar seu
primeiro inteiro com list.head
e a lista contendo 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 sua própria lista, você 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, resumindo, você 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[/!]