Percursos
/
Clojure
Clojure
/
Exercícios
/
Tracks on Tracks on Tracks
Tracks on Tracks on Tracks

Tracks on Tracks on Tracks

Exercício de aprendizagem

Introdução

Em Clojure, as listas são coleções, tal como as listas noutras linguagens. À semelhança de outras linguagens da família Lisp, Clojure usa parênteses para expressar listas.

As listas em Clojure podem ser criadas de duas formas. A função list cria uma lista ou, em alternativa, podes usar quote numa lista literal.

As listas são especiais porque Clojure as trata como chamadas. Espera que a chamada comece com um operador, que normalmente é uma função. Os restantes elementos da lista são considerados operandos, ou seja, tornam-se nos argumentos da função.

É este tratamento especial que Clojure dá às listas que faz com que não possamos criar uma lista literal diretamente. Usar quote numa lista, ou o seu atalho ', indica que a lista não deve ser avaliada.

Ao contrário de algumas linguagens modernas, as listas em Clojure são heterogéneas, ou seja, podem conter vários tipos de elementos. Por exemplo, '(2 "a" "b" 3)

Ao contrário de outros Lisps, uma lista vazia em Clojure é avaliada como verdadeira e não é equivalente a nil ou false.

Instruções

Neste exercício vais escrever código para processar uma lista de linguagens de programação que planeias praticar na plataforma Exercism.

Tens seis tarefas.

1. Criar uma nova lista

Antes de poderes adicionar linguagens, tens de começar por criar uma nova lista. Define uma função que devolve uma lista vazia.

(new-list)
;; => ()

2. Adicionar uma nova linguagem à lista

À medida que exploras o Exercism e encontras linguagens que queres aprender, vais precisar de as adicionar à tua lista. Define uma função para adicionar uma nova linguagem ao início da tua lista.

(add-language '("Clojurescript") "JavaScript")
;; => '("JavaScript" "Clojurescript")

3. Verificar a última linguagem adicionada

Vais querer verificar rapidamente que linguagem acabaste de adicionar. Define uma função que devolve a primeira linguagem da tua lista.

(first-language '("Haskell" "Python"))
;; => "Haskell"

4. Remover a primeira linguagem da lista

Por vezes, mudas de ideias em relação a uma linguagem que acabaste de adicionar. Define uma função para remover a primeira linguagem da tua lista.

(remove-language '("Common Lisp" "Racket" "Scheme"))
;; => '("Racket" "Scheme")

5. Contar as linguagens da lista

Contar as linguagens uma a uma é pouco prático. Define uma função para contar o número de linguagens da tua lista.

(count-languages '("C#" "Racket" "Rust" "Ruby"))
;; => 4

6. Juntar tudo

Define uma função learning-list, na qual vais usar algumas das funções que definiste acima.

  • Cria uma lista vazia

  • Adiciona 2 novas linguagens de programação à lista.

    • "Clojure"
    • "Lisp"
  • Remove "Lisp" da lista, porque podes não ter tempo suficiente ao longo do ano, e é bastante semelhante a Clojure.

  • Adiciona mais 2 linguagens de programação à lista.

    • "Java"
    • "JavaScript"
  • Devolve o número total de linguagens. Sugestão: devem ser 3.

(learning-list)
;; => 3
Editar via GitHub A ligação abre numa nova janela ou separador
Clojure Exercism

Estás pronto para começar Tracks on Tracks on Tracks?

Inscreve-te no Exercism para aprenderes e dominares Clojure com 12 conceitos105 exercícios, e mentoria humana real, tudo grátis.