Combinators

tosh 140 points 39 comments March 31, 2026
tinyapl.rubenverg.com · View on Hacker News

Discussion Highlights (10 comments)

siruwastaken

Could somebody provide a bit of context on what exactly this is? It seems interesting, but I have no idea what I am looking at.

hrmtst93837

The y-combinator is widely regarded as the best combinator :)

ux266478

A bit of an aside: I wonder how much array-oriented languages like APL and J would benefit from being implemented on top of an interaction net machine?

rdevilla

I wish universal and eternal patterns like this were studied more often in software engineering. Perhaps we would have a chance in hell of finding canonical representations of common structures and even programs instead of basket weaving majors fucking reinventing the wheel every 5 minutes with yet another half-baked poorly understood Python or JavaScript instantiation of a common pattern. Imagine still writing for loops and munging indices instead of expressing things in terms of higher order functions like folds or maps... Eh, I don't need to imagine; we're still stuck at that same level of infantilism. Instead of actually graduating to higher order atoms and primitives of thought though, we can just have the AI slop out another 100k LOC. Then the system will have so much incidental complexity that it becomes impossible to distill out its essence, because there no longer is one.

pklausler

The logical combinators that I know all have definitions in the untyped lambda calculus. Is there a typed variant of logical combinators?

gregfjohnson

(Show HN?) There is a deep and lovely connection between the Y-combinator and the classic version of Godel's incompleteness theorem: https://gregfjohnson.com/incompleteness/

cat-whisperer

omega and y are missing buddy! I was so looking forward to having them represented in APL

worldsayshi

Does anyone have a grasp of how this relates to interaction nets?

tromp

The notation used seems rather confusing, not even showing the list of arguments. For example, the argument swapping combinator C which is normally defined as C f x y = f y x is shown on this page as as y F x, which I can only make sense of by assuming that F is an infix function. In Haskell you could use infix notation to define C f x y = y `f` x but you can't use capitalize function arguments.

Trung0246

Wikipedia have a pretty good Z combinator demo: https://en.wikipedia.org/wiki/Fixed-point_combinator --- const K = <A, B>(a: A) => (_b: B) => a; const S = <A, B, C>(a: (x: C) => (y: B) => A) => (b: (x: C) => B) => (c: C) => a(c)(b(c)); const I = S(K)(K); const B = S(K(S))(K); const C = S(B(B)(S))(K(K)); const W = C(S)(I); const T = C(I); const V = B(C)(T); const I1 = C(C(I)); const C1 = B(C); const R1 = C1(C1); const V1 = B(R1)(C1); const I2 = R1(V); const Z = B(W(I1))(V1(B)(W(I2)));

Semantic search powered by Rivestack pgvector
3,471 stories · 32,344 chunks indexed