Everything Is Just Functions: 1 week with David Beazley and SICP

“Everything is just functions” as a lens on programming provokes both excitement and skepticism, especially when taught through classics like SICP and modernized with languages such as Python or JavaScript instead of Scheme. Commenters debate the educational value of deeply functional, lambda-calculus-style thinking versus more “practical” curricula aimed at employable skills, and question how far the “everything is a function” idea can really stretch compared with alternative foundations like relations or inductive data types. Alongside this, there is criticism of tooling choices such as Notion for technical writing, seen as emblematic of broader friction between elegant theory and messy real‑world practice.

Notion / Site and UX Issues

  • Many complain the Notion-hosted article is slow (multi-second render, heavy JS, large heap, many third-party domains).
  • Keyboard navigation is unreliable; scroll behavior and mobile support are broken for some.
  • Some use archive sites to “bake” the JS into plain HTML.
  • Others argue HN guidelines discourage focusing on such tangential annoyances, but the frustration is widespread.

SICP, Languages, and Education

  • Several discuss the JavaScript edition of SICP. Many prefer Scheme’s minimal, regular syntax and its timeless, self-contained nature.
  • Some argue students overly seek “job-ready” languages (JS, Python) and resist theoretical content; others say CS degrees should remain theory-heavy despite market pressures and credentialism.
  • There is nostalgia for classic SICP-based courses and similar curricula; people recommend comparison editions and other SICP-derived resources.

“Everything Is Functions” and Encodings

  • Commenters explore Church/Scott encodings, monads, and representing data (e.g., Maybe) and state via pure functions.
  • Fans find these encodings elegant and educational for understanding control flow and state; critics find them unreadable, cognitively heavy, and unsuitable for production.
  • Some note you need inductive data types (not only Church encodings) for theorem proving and for direct reasoning about equality/inequality.

Abstractions: What vs How, Functions vs Relations

  • One line of discussion advocates focusing on “what” (intent) over “how” (implementation), citing SQL and declarative styles as partial examples but noting their practical limits.
  • Others argue “everything is just X” (functions, objects, files, databases, strings, Turing machines, etc.) is useful as a teaching simplification but dangerous when overextended.
  • Some contend relations are more fundamental than functions; relational and logic programming (e.g., Prolog, Datalog-like ideas) are presented as powerful but underused.

Functional Programming, Python, and Practice

  • Debate over why functional languages haven’t “won” despite theoretical elegance; CPUs are not inherently functional, and real systems involve side effects, resources, and non-determinism.
  • Python is praised as accessible and pragmatic but criticized as a poor fit for SICP’s style (weak FP support, no TCO, awkward lambdas, code-as-data harder than in Lisps).
  • Others argue functional ideas can still be expressed reasonably in Python and have influenced mainstream languages broadly.