Tracks
/
F#
F#
/
Ejercicios
/
Tracks on Tracks on Tracks
Tracks on Tracks on Tracks

Tracks on Tracks on Tracks

Ejercicio de aprendizaje

Introducción

Listas

Una list en F# es una colección inmutable de cero o más valores. Los valores de una lista deben ser todos del mismo tipo. Como las listas son inmutables, una vez que se construye una lista, su valor nunca puede cambiar. Cualquier función u operador que parezca modificar una lista (por ejemplo, agregar un elemento) en realidad devolverá una lista nueva.

Las listas se pueden definir así:

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

La forma más común de agregar un elemento a una lista es mediante el operador :: (cons):

let twoToFour = [2; 3; 4]
let oneToFour = 1 :: twoToFour
// => [1; 2; 3; 4]

Una lista de F# tiene una cabeza (el primer elemento) y una cola (todo lo que sigue después del primer elemento). La cola de una lista es en sí misma una lista.

Las listas se manipulan con las funciones y los operadores definidos en el módulo List, o manualmente mediante la coincidencia de patrones usando los patrones list y cons:

let describe list =
    match list with
    | [] -> "Empty list"
    | head::tail -> sprintf "Non-empty list with head: %d" head

describe []        // => "Empty list"
describe [1]       // => "Non-empty with head: 1"
describe [5; 7; 9] // => "Non-empty with head: 5"

También puedes descartar un valor cuando usas la coincidencia de patrones; cuando no te importa un valor en un caso específico (es decir, no vas a usar ese valor), puedes usar un guion bajo ('_') para indicarlo:

let describe list =
    match list with
    | [] -> "Empty list"
    | [x] -> "List with one item"
    | [_; y] -> "List with two items (first item ignored)"
    | _ -> "List with many items (all items ignored)"

describe []        // => "Empty list"
describe [1]       // => "List with one item"
describe [5; 7]     // => "List with two items (first item ignored)"
describe [5; 7; 9] // => "List with many items (all items ignored)"

Ese único '_' siempre debe ir al final cuando usas la coincidencia de patrones; todos los valores que no coincidan con ninguno de los otros casos se manejarán con este caso.

Instrucciones

En este ejercicio escribirás código para llevar un registro de un array de lenguajes de programación que quieres aprender en Exercism.

Tienes seis tareas, y todas implican trabajar con arrays.

1. Crea un nuevo array

Para llevar un registro de los lenguajes que quieres aprender, necesitarás crear un nuevo array. Define el enlace newList que contiene un array nuevo y vacío.

newList
// => []

2. Define un array existente

Por ahora tienes una hoja de papel donde anotaste los lenguajes que quieres aprender: F#, Clojure y Haskell. Define el enlace existingList para representar ese array.

existingList
// => ["F#"; "Clojure"; "Haskell"]

3. Agrega un nuevo lenguaje a un array

A medida que exploras Exercism y encuentras lenguajes más interesantes, quieres agregarlos a tu array. Implementa la función addLanguage para agregar un nuevo lenguaje al inicio de tu array.

addLanguage "TypeScript" ["JavaScript"; "CoffeeScript"]
// => ["TypeScript"; "JavaScript"; "CoffeeScript"]

4. Cuenta los lenguajes del array

Contar los lenguajes uno por uno es incómodo. Implementa la función countLanguages para contar la cantidad de lenguajes que hay en tu array.

countLanguages ["C#"; "Racket"; "Rust"; "Ruby"]
// => 4

5. Invierte el array

En algún momento te das cuenta de que tu array en realidad está ordenado al revés. Implementa la función reverseList para invertir tu array.

reverseList ["Prolog"; "C"; "Idris"; "Assembly"]
// => ["Assembly"; "Idris"; "C"; "Prolog"]

6. Verifica si el array es emocionante

Aunque amas todos los lenguajes, F# ocupa un lugar especial en tu corazón. Por eso, un array de lenguajes te emociona mucho si:

  • El primero del array es F#.
  • El segundo elemento del array es F# y el array contiene dos o tres lenguajes.

Implementa la función excitingList para verificar si un array de lenguajes es emocionante:

excitingList ["Nim"; "F#"]
// => true
Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
F# Exercism

¿Todo listo para empezar Tracks on Tracks on Tracks?

Regístrate en Exercism para aprender y dominar F# con 18 conceptos148 ejercicios y mentoría humana real, todo gratis.