martes, 23 de abril de 2024

Funciones genéricas en Gleam


import gleam/io


pub fn main() {

  let add_one = fn(x) { x + 1 }

  let exclaim = fn(x) { x <> "!" }


  // Invalid, Int and String are not the same type

  // twice(10, exclaim)


  // Here the type variable is replaced by the type Int

  io.debug(twice(10, add_one))


  // Here the type variable is replaced by the type String

  io.debug(twice("Hello", exclaim))

}


// The name `value` refers to the same type multiple times

fn twice(argument: value, my_function: fn(value) -> value) -> value {

  my_function(my_function(argument))

}


Gleam admite genéricos, también conocidos como polimorfismo paramétrico.

Esto funciona utilizando una variable de tipo en lugar de especificar un tipo concreto. Reemplaza cualquier tipo específico que se utilice cuando se llama a la función. Estas variables de tipo se escriben con un nombre en minúscula.

Las variables de tipo no son como cualquier tipo, se reemplazan con un tipo específico cada vez que se llama a la función. 


No hay comentarios.:

Publicar un comentario