Track
/
Gleam
Gleam
/
Esercizi
/
Il forziere del tesoro
Il forziere del tesoro

Il forziere del tesoro

Esercizio di apprendimento

Introduzione

Generici

Un tipo è un tipo generico quando può contenere valori di qualsiasi tipo usando un parametro di tipo.

Per esempio, questo tipo Box ha il parametro di tipo a (scritto con lettere minuscole).

pub type Box(a) {
  Box(a)
}

Il parametro di tipo a è un segnaposto per qualsiasi tipo, quindi Box può essere usato con stringhe, interi o qualsiasi altro tipo.

Box("Hello, Joe!") // The type is Box(String)

Box(42) // The type is Box(Int)

Un tipo può avere più parametri di tipo separati da virgole.

pub type Pair(a, b) {
  Pair(a, b)
}

Funzioni generiche

I parametri di tipo si possono usare anche negli argomenti delle funzioni.

Questa funzione prende un valore di tipo a e chiama due volte una funzione che prende un a e restituisce un b.

pub fn twice(value: a, f: fn(a) -> b) -> b {
  f(value)
  f(value)
}
// The type is fn(String, fn(String) -> Nil) -> Nil
twice("Hello, Joe!", io.println)

Istruzioni

In questo esercizio scriverai un TreasureChest generico (e magico!) per custodire un tesoro.

1. Definisci il tipo personalizzato generico TreasureChest

Definisci un tipo personalizzato TreasureChest con una sola variante.

La variante deve avere un valore String associato, che verrà usato per memorizzare la password del forziere.

La variante deve avere anche un valore generico associato, che verrà usato per memorizzare il tesoro. Questo valore è generico, così il tesoro può essere qualsiasi cosa.

2. Definisci il tipo UnlockResult

Definisci un tipo personalizzato UnlockResult con due varianti.

La prima variante deve essere Unlocked e deve contenere un valore generico, che verrà usato per memorizzare il tesoro.

La seconda variante deve essere WrongPassword, che non contiene alcun valore.

3. Definisci la funzione get_treasure

Questa funzione deve accettare due parametri

  • un tipo personalizzato generico TreasureChest
  • una String (per provare una password)

Questa funzione deve confrontare il tentativo di password fornito con la String contenuta nel TreasureChest.

La funzione deve restituire un UnlockResult.

Se le password corrispondono, restituisci Unlocked con il valore generico contenuto nel TreasureChest (il tesoro!)

Se le password non corrispondono, restituisci WrongPassword.

Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Gleam Exercism

Vuoi iniziare Il forziere del tesoro?

Iscriviti a Exercism per imparare e padroneggiare Gleam con 33 concetti122 esercizi e il mentoring di persone reali, tutto gratis.