Trilhas
/
Gleam
Gleam
/
Exercícios
/
Tracks on Tracks on Tracks
Tracks on Tracks on Tracks

Tracks on Tracks on Tracks

Exercício de aprendizagem

Introdução

Listas

Uma lista em Gleam é uma coleção imutável de zero ou mais valores. Os valores em uma lista devem ter todos o mesmo tipo. Como listas são imutáveis, uma vez que uma lista foi construída, seu valor nunca pode mudar. Quaisquer funções/operadores que pareçam modificar uma lista (como adicionar um elemento) na verdade retornarão uma nova lista.

Listas podem ser definidas assim:

let empty = []
let singleValue = [5]
let threeValues = ["a", "b", "c"]

A forma mais comum de adicionar um elemento a uma lista é por meio da sintaxe de espalhamento:

let two_to_four = [2, 3, 4]
let one_to_four = [1, ..two_to_four]
// -> [1, 2, 3, 4]

O módulo gleam/list da biblioteca padrão do Gleam contém muitas funções úteis para trabalhar com listas. Esse módulo é muito usado em código Gleam, então vale a pena se familiarizar com ele.

Padrões de listas podem ser usados em expressões case para corresponder a listas e atribuir os valores contidos a variáveis:

pub fn describe(list: List(String)) -> String {
  case list {
    [] -> "Empty list"
    [x] -> "List with one item: " <> x
    [x, y] -> "List with two items: " <> x <> " and " <> y
    _ -> "List with three or more items"
  }
}

Além de corresponder a listas de comprimento exato, a sintaxe de espalhamento pode ser usada para corresponder a listas com pelo menos um determinado comprimento:

pub fn describe(list: List(String)) -> String {
  case list {
    [_, _, ..] -> "List with at least two items"
    [_] -> "List with one item"
    [] -> "Empty list"
  }
}

A sintaxe de espalhamento também pode ser usada para atribuir o restante da lista a uma variável:

pub fn remove_first_item(list: List(String)) -> List(String) {
  case list {
    // Return the list without the first item
    [_, ..rest] -> rest

    // There's no first item to remove, return an empty list
    _ -> []
  }
}

Expressões case devem ter um padrão para todo valor possível do tipo com o qual se está fazendo correspondência, então um padrão de descarte final (_) costuma ser usado para lidar com quaisquer valores restantes.

Instruções

Neste exercício, você vai escrever código para acompanhar uma lista de linguagens de programação que você quer aprender no Exercism.

São seis tarefas, e todas elas envolvem lidar com listas.

1. Crie uma nova lista

Para acompanhar as linguagens que você quer aprender, você vai precisar criar uma nova lista. Defina a função new_list, que retorna uma nova lista vazia.

new_list()
// -> []

2. Defina uma lista existente

No momento, você tem um papel com as linguagens que quer aprender: Gleam, Go e TypeScript. Defina a função existing_list para retornar essa lista.

existing_list()
// -> ["Gleam", "Go", "TypeScript"]

3. Adicione uma nova linguagem a uma lista

Conforme você explora o Exercism e encontra linguagens mais interessantes, você vai querer adicioná-las à sua lista. Implemente a função add_language para adicionar uma nova linguagem ao início da sua lista.

add_language(["OCaml", "Elixir"], "Scheme")
// -> ["Scheme", "OCaml", "Elixir"]

4. Conte as linguagens da lista

Contar as linguagens uma a uma é inconveniente. Implemente a função count_languages para contar quantas linguagens há na sua lista.

count_languages(["jq", "Elm", "Rust", "Kotlin"])
// -> 4

5. Inverta a lista

Em algum momento, você percebe que sua lista está na verdade na ordem inversa! Implemente a função reverse_list para inverter sua lista.

reverse_list(["Python", "Julia", "Idris", "COBOL"])
// -> ["COBOL", "Idris", "Julia", "Python"]

6. Verifique se a lista é empolgante

Embora você ame todas as linguagens, Gleam tem um lugar especial no seu coração. Por isso, você fica muito empolgado com uma lista de linguagens se:

  • A primeira da lista é Gleam.
  • O segundo item da lista é Gleam e a lista contém duas ou três linguagens.

Implemente a função exciting_list para verificar se uma lista de linguagens é empolgante:

exciting_list(["Lua", "Gleam"])
// -> True
Editar via GitHub O link abre em uma nova janela ou aba
Gleam Exercism

Tudo pronto para começar Tracks on Tracks on Tracks?

Crie sua conta no Exercism para aprender e dominar Gleam com 33 conceitos122 exercícios e mentoria humana de verdade, tudo de graça.