← ClaudeAtlas

functional-patternslisted

Functional programming patterns that promote testability, composability, and maintainability.
aiskillstore/marketplace · ★ 329 · AI & Automation · score 79
Install: claude install-skill aiskillstore/marketplace
# Functional Patterns for Node.js/TypeScript ## Overview Functional programming patterns that promote testability, composability, and maintainability. ## Pure Functions ### Definition A pure function: - Always returns the same output for the same input - Has no side effects (no I/O, no mutation) ### Examples ```typescript // Pure: Deterministic, no side effects const add = (a: number, b: number): number => a + b; const calculateTotal = (items: OrderItem[]): number => items.reduce((sum, item) => sum + item.price * item.quantity, 0); const filterActiveUsers = (users: User[]): User[] => users.filter((user) => user.isActive); // Impure: Has side effects const saveUser = async (user: User): Promise<void> => { await database.save(user); // I/O side effect }; const logMessage = (msg: string): void => { console.log(msg); // Side effect }; const generateId = (): string => { return crypto.randomUUID(); // Non-deterministic }; ``` ### Pure Core, Impure Shell ```typescript // Pure core - all business logic const validateOrder = (order: Order): Result<Order, ValidationError> => { if (!order.items.length) return Result.fail({ code: 'EMPTY_ORDER' }); if (order.total < 0) return Result.fail({ code: 'INVALID_TOTAL' }); return Result.ok(order); }; const calculateDiscount = (order: Order, user: User): number => { const baseDiscount = user.isPremium ? 0.15 : 0; const volumeDiscount = order.items.length > 10 ? 0.05 : 0; return baseDiscount + volumeDiscount; };