Code Explainers

Code explainers tagged #recursion

javascript
function evaluate(expression) {
  const tokens = tokenize(expression);
  let pos = 0;
 

Building a recursive descent calculator

parsing recursion operator-precedence
Intermediate 8 steps
python
import functools
import inspect
from typing import get_type_hints, get_origin, get_args, Union
 

A runtime type checker from annotations

decorators runtime-validation type-hints
Advanced 8 steps
java
public final class MapFlattener {
 
    private MapFlattener() {
    }

Flattening nested maps into dotted keys

recursion tree-traversal data-transformation
Intermediate 7 steps
go
package flatten
 
import (
	"encoding/json"

Flattening nested JSON into dotted keys

recursion json type-switch
Intermediate 7 steps
rust
use serde_json::{Map, Value};
 
pub fn merge_config(base: &mut Value, override_with: Value) {
    match (base, override_with) {

Deep-merging JSON config layers in Rust

recursion json pattern-matching
Intermediate 9 steps
ruby
class Category < ApplicationRecord
  belongs_to :parent, class_name: "Category", optional: true
  has_many :children,
           -> { order(:position) },

Modeling a self-referential category tree in Rails

self-referential-association recursion tree-structure
Intermediate 9 steps
python
class TrieNode:
    __slots__ = ("children", "is_word")
 
    def __init__(self):

Building a prefix trie in Python

trie tree-traversal recursion
Intermediate 7 steps
javascript
function flatten(obj, prefix = '', result = {}) {
  for (const [key, value] of Object.entries(obj)) {
    const path = prefix ? `${prefix}.${key}` : key;
 

Flattening nested objects into dotted paths

recursion object-traversal accumulator
Intermediate 6 steps
go
package trie
 
import "sort"
 

Building a frequency-ranked autocomplete trie in Go

trie autocomplete recursion
Intermediate 9 steps
javascript
import { useState } from 'react';
 
function TreeNode({ node, depth = 0 }) {
  const [expanded, setExpanded] = useState(depth === 0);

How a recursive file tree renders in React

recursion component-composition local-state
Intermediate 8 steps
ruby
class WeightedMovingAverageForecaster
  DEFAULT_WINDOW = 5
 
  def initialize(window: DEFAULT_WINDOW, weights: nil)

A weighted moving average forecaster in Ruby

forecasting weighted-average normalization
Intermediate 8 steps
python
from xml.etree import ElementTree as ET
from xml.dom import minidom
 
 

Converting nested dicts to XML in Python

recursion serialization xml
Intermediate 9 steps
typescript
type QueryValue = string | number | boolean | null | undefined;
type QueryInput = QueryValue | QueryValue[] | { [key: string]: QueryInput };
 
function buildQueryString(params: Record<string, QueryInput>): string {

Building nested query strings recursively

recursion url-encoding serialization
Intermediate 8 steps
python
class Parser:
    def __init__(self, text):
        self.tokens = self._tokenize(text)
        self.pos = 0

A recursive descent arithmetic parser

recursive-descent tokenizer operator-precedence
Intermediate 9 steps
rust
use std::collections::HashMap;
 
#[derive(Clone, Copy, PartialEq)]
enum Color {

Detecting cycles with three-color DFS in Rust

graph-algorithms cycle-detection depth-first-search
Intermediate 9 steps
go
package logging
 
import (
	"fmt"

Redacting secrets with Go reflection

reflection recursion struct-tags
Advanced 10 steps
typescript
type Flatten = Record<string, unknown>;
 
function isPlainObject(value: unknown): value is Record<string, unknown> {
  return (

Flattening nested objects into dotted keys

recursion reduce type-guards
Intermediate 7 steps
typescript
type Masker = (value: string) => string;
 
const maskEmail: Masker = (value) => {
  const [local, domain] = value.split("@");

Recursively masking sensitive data for logs

recursion regex data-masking
Intermediate 9 steps