# ConsWorld

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.

- A lista vazia:

      [!java]null[/!][!scala]Nil[/!][!python]None[/!]

- Obtém o primeiro elemento de `l`

      l.head

- Obtém o resto da lista, quando o primeiro elemento é removido:

      l.tail

- Constrói uma lista a partir de um `valor` e uma `lista`: [!java|python]

      cons(value, list)

  [/!] [!scala]

      value::list

  [/!]