Functional

Functional Programming

map, filter, reduce — and what lambda syntax looks like in each language

Funktionale Konzepte sind in modernem Code universell. map/filter/reduce sind in Interviews oft eleganter als for-Loops.

Language:
Python
Loading...

All languages — map — Transform

JavaScript
const nums = [1, 2, 3, 4, 5];

const doubled = nums.map(x => x * 2);
// [2, 4, 6, 8, 10]

// Mit Index:
const withIndex = nums.map((x, i) => `${i}:${x}`);
// ["0:1", "1:2", ...]

console.log(doubled);
TypeScript
const nums: number[] = [1, 2, 3, 4, 5];

const doubled: number[] = nums.map((x: number) => x * 2);

const strings: string[] = nums.map(x => x.toString());
Java
List<Integer> nums = Arrays.asList(1, 2, 3, 4, 5);

// Stream + map:
List<Integer> doubled = nums.stream()
    .map(x -> x * 2)
    .collect(Collectors.toList());

// Mit toList() (Java 16+):
List<Integer> doubled2 = nums.stream()
    .map(x -> x * 2)
    .toList();

System.out.println(doubled);
Go
// Go hat kein eingebautes map() — eigene Funktion oder Loop:
nums := []int{1, 2, 3, 4, 5}

doubled := make([]int, len(nums))
for i, x := range nums {
    doubled[i] = x * 2
}

// Oder generische Hilfsfunktion (Go 1.21+):
// slices.Map existiert noch nicht — selbst schreiben:
fmt.Println(doubled)
C++
#include <algorithm>
#include <vector>

vector<int> nums = {1, 2, 3, 4, 5};

// transform (in-place oder in neuen Vektor):
vector<int> doubled(nums.size());
transform(nums.begin(), nums.end(), doubled.begin(),
          [](int x) { return x * 2; });

// Oder mit Range-based loop:
for (int& x : nums) x *= 2;