frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Show HN: Tasty A.F

https://tastyaf.recipes/about
1•adammfrank•31s ago•0 comments

The Contagious Taste of Cancer

https://www.historytoday.com/archive/history-matters/contagious-taste-cancer
1•Thevet•2m ago•0 comments

U.S. Jobs Disappear at Fastest January Pace Since Great Recession

https://www.forbes.com/sites/mikestunson/2026/02/05/us-jobs-disappear-at-fastest-january-pace-sin...
1•alephnerd•2m ago•0 comments

Bithumb mistakenly hands out $195M in Bitcoin to users in 'Random Box' giveaway

https://koreajoongangdaily.joins.com/news/2026-02-07/business/finance/Crypto-exchange-Bithumb-mis...
1•giuliomagnifico•2m ago•0 comments

Beyond Agentic Coding

https://haskellforall.com/2026/02/beyond-agentic-coding
2•todsacerdoti•3m ago•0 comments

OpenClaw ClawHub Broken Windows Theory – If basic sorting isn't working what is?

https://www.loom.com/embed/e26a750c0c754312b032e2290630853d
1•kaicianflone•5m ago•0 comments

OpenBSD Copyright Policy

https://www.openbsd.org/policy.html
1•Panino•6m ago•0 comments

OpenClaw Creator: Why 80% of Apps Will Disappear

https://www.youtube.com/watch?v=4uzGDAoNOZc
1•schwentkerr•10m ago•0 comments

What Happens When Technical Debt Vanishes?

https://ieeexplore.ieee.org/document/11316905
1•blenderob•11m ago•0 comments

AI Is Finally Eating Software's Total Market: Here's What's Next

https://vinvashishta.substack.com/p/ai-is-finally-eating-softwares-total
2•gmays•12m ago•0 comments

Computer Science from the Bottom Up

https://www.bottomupcs.com/
2•gurjeet•12m ago•0 comments

Show HN: I built a toy compiler as a young dev

https://vire-lang.web.app
1•xeouz•14m ago•0 comments

You don't need Mac mini to run OpenClaw

https://runclaw.sh
1•rutagandasalim•14m ago•0 comments

Learning to Reason in 13 Parameters

https://arxiv.org/abs/2602.04118
1•nicholascarolan•16m ago•0 comments

Convergent Discovery of Critical Phenomena Mathematics Across Disciplines

https://arxiv.org/abs/2601.22389
1•energyscholar•17m ago•1 comments

Ask HN: Will GPU and RAM prices ever go down?

1•alentred•17m ago•0 comments

From hunger to luxury: The story behind the most expensive rice (2025)

https://www.cnn.com/travel/japan-expensive-rice-kinmemai-premium-intl-hnk-dst
2•mooreds•18m ago•0 comments

Substack makes money from hosting Nazi newsletters

https://www.theguardian.com/media/2026/feb/07/revealed-how-substack-makes-money-from-hosting-nazi...
5•mindracer•19m ago•2 comments

A New Crypto Winter Is Here and Even the Biggest Bulls Aren't Certain Why

https://www.wsj.com/finance/currencies/a-new-crypto-winter-is-here-and-even-the-biggest-bulls-are...
1•thm•19m ago•0 comments

Moltbook was peak AI theater

https://www.technologyreview.com/2026/02/06/1132448/moltbook-was-peak-ai-theater/
1•Brajeshwar•20m ago•0 comments

Why Claude Cowork is a math problem Indian IT can't solve

https://restofworld.org/2026/indian-it-ai-stock-crash-claude-cowork/
2•Brajeshwar•20m ago•0 comments

Show HN: Built an space travel calculator with vanilla JavaScript v2

https://www.cosmicodometer.space/
2•captainnemo729•20m ago•0 comments

Why a 175-Year-Old Glassmaker Is Suddenly an AI Superstar

https://www.wsj.com/tech/corning-fiber-optics-ai-e045ba3b
1•Brajeshwar•20m ago•0 comments

Micro-Front Ends in 2026: Architecture Win or Enterprise Tax?

https://iocombats.com/blogs/micro-frontends-in-2026
2•ghazikhan205•22m ago•1 comments

These White-Collar Workers Actually Made the Switch to a Trade

https://www.wsj.com/lifestyle/careers/white-collar-mid-career-trades-caca4b5f
1•impish9208•23m ago•1 comments

The Wonder Drug That's Plaguing Sports

https://www.nytimes.com/2026/02/02/us/ostarine-olympics-doping.html
1•mooreds•23m ago•0 comments

Show HN: Which chef knife steels are good? Data from 540 Reddit tread

https://new.knife.day/blog/reddit-steel-sentiment-analysis
1•p-s-v•23m ago•0 comments

Federated Credential Management (FedCM)

https://ciamweekly.substack.com/p/federated-credential-management-fedcm
1•mooreds•24m ago•0 comments

Token-to-Credit Conversion: Avoiding Floating-Point Errors in AI Billing Systems

https://app.writtte.com/read/kZ8Kj6R
1•lasgawe•24m ago•1 comments

The Story of Heroku (2022)

https://leerob.com/heroku
1•tosh•24m ago•0 comments
Open in hackernews

Functional Threading "Macros"

https://aartaka.me/threading.html
67•GarethX•4mo ago

Comments

kazinator•4mo ago
The main problem that threading macros solve is the lack of implicit partial application. If you farm that problem to partial-applicative combinators, you can do it:

  This is the TXR Lisp interactive listener of TXR 302.
  Quit with :quit or Ctrl-D on an empty line. Ctrl-X ? for cheatsheet.
  1> (defun bind1 (fn a1) (lambda (a2) [fn a1 a2]))
  bind1
  2> (defun bind2 (fn a2) (lambda (a1) [fn a1 a2]))
  bind2
We define bind1 and bind2 for binding the left or right argument of a binary function producing a unary function, then:

  3> [chain [bind1 * 2] succ]
  #<intrinsic fun: 0 param + variadic>
  4> [*3 10]
  21
The only wart is you have that explicit bind1.

You can write functions that notice they have fewer arguments than ostensibly required and partially apply themselves. Obviously the standard * can't do that because it's usefully variadic already.

Anyway, in the implementation of TXR, I've done this kind of thing in C, just with function calls: no macros. E.g. in eval.c, certain functions are prepared that the quasiquote expander uses:

static val consp_f, second_f, list_form_p_f, quote_form_p_f; static val xform_listed_quote_f;

  static void qquote_init(void)
  {
    val eq_to_list_f = pa_12_1(eq_f, list_s);
    val eq_to_quote_f = pa_12_1(eq_f, quote_s);
    val cons_f = func_n2(cons);

    protect(&consp_f, &second_f, &list_form_p_f,
            &quote_form_p_f, &xform_listed_quote_f, convert(val *, 0));

    eq_to_list_f = pa_12_1(eq_f, list_s);
    consp_f = func_n1(consp);
    second_f = func_n1(second);
    list_form_p_f = andf(consp_f,
                         chain(car_f, eq_to_list_f, nao),
                         nao);
    quote_form_p_f = andf(consp_f,
                          chain(cdr_f, consp_f, nao),
                          chain(cdr_f, cdr_f, null_f, nao),
                          chain(car_f, eq_to_quote_f, nao),
                          nao);
    xform_listed_quote_f = iffi(andf(consp_f,
                                     chain(car_f, eq_to_list_f, nao),
                                     chain(cdr_f, consp_f, nao),
                                     chain(cdr_f, cdr_f, null_f, nao),
                                     chain(cdr_f, car_f, consp_f, nao),
                                     chain(cdr_f, car_f, car_f, eq_to_quote_f, nao),
                                     nao),
                                chain(cdr_f, car_f, cdr_f,
                                      pa_12_1(cons_f, nil),
                                      pa_12_2(cons_f, quote_s),
                                      nao),
                                nil);
  }
"nao" means "not an object": it's a sentinel value used internally in the runt-time for various purposes, the most common of them being the termination of variadic argument lists.

andf is an and combinator: it returns a function which passes its argument(s) to each function in turn; if anything returns nil, it stops calling functions and returns nil. Otherwise it returns the value of the last function.

The pa_this_that functions are partial applicator combinators, generalizations of bind1 and bind2. E.g. pa_12_1 means take a fucntion with arguments 1 2, returning a function which just takes 1 (so 2 is bound: this is like bind2). A bunch of these exist, and more coud be added if needed: pa_1234_1, pa_1234_34 pa_123_1, pa_123_2, pa_123_3, pa_12_1 and pa_12_2.

adityaathalye•4mo ago
If the language allows passing lists of functions, then `comp` can be implemented by hand: https://clojuredocs.org/clojure.core/comp

And re-implementing `comp` by hand can teach us more than we bargained for (all the way to compiler technology)... I blogged about it here: https://www.evalapply.org/posts/lessons-from-reimplementing-...

  ;; Clojure source code for `comp` (since Clojure v1.0)
  (defn comp
    "Takes a set of functions and returns a fn that is the composition
    of those fns.  The returned fn takes a variable number of args,
    applies the rightmost of fns to the args, the next
    fn (right-to-left) to the result, etc."
    {:added "1.0"
     :static true}
    ([] identity)
    ([f] f)
    ([f g] 
       (fn 
         ([] (f (g)))
         ([x] (f (g x)))
         ([x y] (f (g x y)))
         ([x y z] (f (g x y z)))
         ([x y z & args] (f (apply g x y z args)))))
    ([f g & fs]
       (reduce1 comp (list* f g fs))))
adityaathalye•4mo ago
fogus has a couple of nice little posts on the threading macro itself...

https://blog.fogus.me/2013/09/04/a-ha-ha-ha-aah.html

https://blog.fogus.me/2009/09/04/understanding-the-clojure-m...

adityaathalye•4mo ago
Oh and, the arrow-kt library bolts this onto kotlin.

Utilities for functions: https://arrow-kt.io/learn/collections-functions/utils/

nesarkvechnep•4mo ago
Starts with saying they like Common Lisp but use Clojure daily, then proceeds with some language called "lamber". What?
shawn_w•4mo ago
From the post:

>The language I’m using in this post is Lamber, my Lambda Calculus compiling language. It features a minimalist syntax with only functions, values, if-s, and operators like Wisp’s colon nesting operator and terminating period (similar to Lua’s end.)