1 |
¿Qué es la programación funcional? |
La programación funcional es un paradigma de programación que trata el cálculo como la evaluación de funciones matemáticas y evita el cambio de estado y los datos mutables. |
2 |
¿Cuál es un ejemplo de función pura en Java? |
import java.util.function.Function;
public class FunctionalExample {
public static void main(String[] args) {
Function square = x -> x * x;
System.out.println(square.apply(5)); // Output: 25
}
}
|
3 |
¿Cómo se usa una función pura en Python? |
def square(x):
return x * x
print(square(5)) # Output: 25
|
4 |
¿Qué es una función pura en C#? |
using System;
class Program {
static void Main() {
Func square = x => x * x;
Console.WriteLine(square(5)); // Output: 25
}
}
|
5 |
¿Cómo se define una función pura en TypeScript? |
const square = (x: number): number => x * x;
console.log(square(5)); // Output: 25
|
6 |
¿Qué es la programación declarativa? |
La programación declarativa es un paradigma en el que se describe qué hacer en lugar de cómo hacerlo, especificando las propiedades y relaciones de los datos. |
7 |
¿Cómo se usa programación declarativa en Java con Streams? |
import java.util.Arrays;
public class DeclarativeExample {
public static void main(String[] args) {
Arrays.asList(1, 2, 3, 4, 5).stream()
.filter(x -> x % 2 == 0)
.forEach(System.out::println); // Output: 2, 4
}
}
|
8 |
¿Cómo se aplica programación declarativa en Python con list comprehensions? |
evens = [x for x in range(1, 6) if x % 2 == 0]
print(evens) # Output: [2, 4]
|
9 |
¿Qué es un operador de alto orden en C#? |
using System;
using System.Linq;
class Program {
static void Main() {
var numbers = new[] { 1, 2, 3, 4, 5 };
var evens = numbers.Where(x => x % 2 == 0);
foreach (var even in evens) {
Console.WriteLine(even); // Output: 2, 4
}
}
}
|
10 |
¿Cómo se implementa programación declarativa en TypeScript con array methods? |
const numbers = [1, 2, 3, 4, 5];
const evens = numbers.filter(x => x % 2 === 0);
console.log(evens); // Output: [2, 4]
|
11 |
¿Qué es un side effect y cómo se evita en programación funcional? |
Un side effect es cualquier cambio en el estado externo o en la interacción con el mundo exterior que ocurre durante la ejecución de una función. En programación funcional, se evita usando funciones puras que no alteran el estado y no tienen efectos secundarios. |
12 |
¿Cómo se evita el side effect en Java? |
import java.util.function.Function;
public class SideEffectExample {
public static void main(String[] args) {
Function addFive = x -> x + 5; // No side effect
System.out.println(addFive.apply(10)); // Output: 15
}
}
|
13 |
¿Cómo se evita el side effect en Python? |
def add_five(x):
return x + 5 # No side effect
print(add_five(10)) # Output: 15
|
14 |
¿Cómo se evita el side effect en C#? |
using System;
class Program {
static void Main() {
Func addFive = x => x + 5; // No side effect
Console.WriteLine(addFive(10)); // Output: 15
}
}
|
15 |
¿Cómo se evita el side effect en TypeScript? |
const addFive = (x: number): number => x + 5; // No side effect
console.log(addFive(10)); // Output: 15
|
16 |
¿Qué son las funciones de orden superior? |
Las funciones de orden superior son funciones que pueden recibir otras funciones como argumentos o devolverlas como resultado. |
17 |
¿Cómo se define una función de orden superior en Java? |
import java.util.function.Function;
public class HigherOrderFunctionExample {
public static void main(String[] args) {
Function multiplyBy = factor -> x -> x * factor;
Function doubleValue = multiplyBy.apply(2);
System.out.println(doubleValue.apply(5)); // Output: 10
}
}
|
18 |
¿Cómo se define una función de orden superior en Python? |
def multiplier(factor):
return lambda x: x * factor
double_value = multiplier(2)
print(double_value(5)) # Output: 10
|
19 |
¿Cómo se define una función de orden superior en C#? |
using System;
class Program {
static void Main() {
Func> multiplier = factor => x => x * factor;
var doubleValue = multiplier(2);
Console.WriteLine(doubleValue(5)); // Output: 10
}
}
|
20 |
¿Cómo se define una función de orden superior en TypeScript? |
const multiplier = (factor: number) => (x: number): number => x * factor;
const doubleValue = multiplier(2);
console.log(doubleValue(5)); // Output: 10
|
21 |
¿Qué son los "closures" y cómo se usan en programación funcional? |
Un closure es una función que captura y recuerda el entorno en el que fue creada, incluyendo las variables locales y parámetros, lo que permite acceder a esos valores fuera de su ámbito original. |
22 |
¿Cómo se usa un closure en Java? |
public class ClosureExample {
public static void main(String[] args) {
int factor = 2;
Function multiplier = x -> x * factor;
System.out.println(multiplier.apply(5)); // Output: 10
}
}
|
23 |
¿Cómo se usa un closure en Python? |
def make_multiplier(factor):
def multiplier(x):
return x * factor
return multiplier
double_value = make_multiplier(2)
print(double_value(5)) # Output: 10
|
24 |
¿Cómo se usa un closure en C#? |
using System;
class Program {
static void Main() {
int factor = 2;
Func multiplier = x => x * factor;
Console.WriteLine(multiplier(5)); // Output: 10
}
}
|
25 |
¿Cómo se usa un closure en TypeScript? |
const makeMultiplier = (factor: number) => (x: number): number => x * factor;
const doubleValue = makeMultiplier(2);
console.log(doubleValue(5)); // Output: 10
|
26 |
¿Qué son las "monads" en programación funcional? |
Las monads son una abstracción que permite encadenar operaciones de manera que cada operación puede manejar su propio contexto, como errores o estados, de forma segura y sin efectos secundarios. |
27 |
¿Cómo se implementa una "monad" en Java? |
import java.util.Optional;
public class MonadExample {
public static void main(String[] args) {
Optional result = Optional.of(5)
.map(x -> x * 2)
.map(x -> x + 3);
System.out.println(result.orElse(0)); // Output: 13
}
}
|
28 |
¿Cómo se implementa una "monad" en Python? |
from typing import Optional
result = Optional.of(5).map(lambda x: x * 2).map(lambda x: x + 3)
print(result.get_or_default(0)) # Output: 13
|
29 |
¿Cómo se implementa una "monad" en C#? |
using System;
class Program {
static void Main() {
var result = Optional.Of(5)
.Map(x => x * 2)
.Map(x => x + 3);
Console.WriteLine(result.GetValueOrDefault(0)); // Output: 13
}
}
|
30 |
¿Cómo se implementa una "monad" en TypeScript? |
class Maybe {
constructor(private value: T | null) {}
static of(value: U | null) {
return new Maybe(value);
}
map(fn: (value: T) => U): Maybe {
return this.value === null ? new Maybe(null) : new Maybe(fn(this.value));
}
getOrElse(defaultValue: T): T {
return this.value === null ? defaultValue : this.value;
}
}
const result = Maybe.of(5)
.map(x => x * 2)
.map(x => x + 3);
console.log(result.getOrElse(0)); // Output: 13
|
31 |
¿Cómo se realiza el "currying" en Java? |
import java.util.function.Function;
public class CurryingExample {
public static void main(String[] args) {
Function> multiply = x -> y -> x * y;
System.out.println(multiply.apply(2).apply(3)); // Output: 6
}
}
|
32 |
¿Cómo se realiza el "currying" en Python? |
def multiply(x):
def inner(y):
return x * y
return inner
result = multiply(2)(3)
print(result) # Output: 6
|
33 |
¿Cómo se realiza el "currying" en C#? |
using System;
class Program {
static void Main() {
Func> multiply = x => y => x * y;
Console.WriteLine(multiply(2)(3)); // Output: 6
}
}
|
34 |
¿Cómo se realiza el "currying" en TypeScript? |
const multiply = (x: number) => (y: number): number => x * y;
console.log(multiply(2)(3)); // Output: 6
|
35 |
¿Qué es la "inmutabilidad" y cómo se aplica en programación funcional? |
La inmutabilidad es el concepto de que una vez creado un objeto o variable, su estado no puede cambiar. En programación funcional, se favorecen los datos inmutables para evitar efectos secundarios y mejorar la predictibilidad del código. |
36 |
¿Cómo se maneja la inmutabilidad en Java? |
public final class ImmutablePerson {
private final String name;
private final int age;
public ImmutablePerson(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
|
37 |
¿Cómo se maneja la inmutabilidad en Python? |
from typing import NamedTuple
class ImmutablePerson(NamedTuple):
name: str
age: int
person = ImmutablePerson(name='John', age=30)
print(person.name) # Output: John
|
38 |
¿Cómo se maneja la inmutabilidad en C#? |
public class ImmutablePerson {
public string Name { get; }
public int Age { get; }
public ImmutablePerson(string name, int age) {
Name = name;
Age = age;
}
}
|
39 |
¿Cómo se maneja la inmutabilidad en TypeScript? |
class ImmutablePerson {
constructor(public readonly name: string, public readonly age: number) {}
}
const person = new ImmutablePerson('John', 30);
console.log(person.name); // Output: John
|