Topics /

Programming Languages

The most popular blog posts about programming languages on Hacker News. 427 posts.

2020
215

Parse, don’t type-check

There’s a fantastic article from last year titled Parse, don’t validate. I’d highly recommend it to any programmer (along with the more recent follow up Names are not type safety). The basic idea i…

217

K Language (2011)

Forthcoming events See all events... News Administration Files Buyer Profile Jobs Tenure Procedures Attestation Documents To the Prize page Please donate BIC: UNCRBGSF IBAN: BG32UNCR76303100117336 Address: Institute of Mathematics and

220

Hindley-Milner Type Inference (2012)

Robin Milner's type system with parametric polymorphism was a significant advance over the systems of Russell and Church. Arguably it is the ability to use type-variables that makes higher order logic a practical vehicle for proving non-trivial theorems. The Hindley-Milner algorithm is used to automatically infer…

223

Which Parsing Approach?

We all know that parsing is an important part of designing and implementing programming languages, but it’s the equivalent of Brussels sprouts: good for the diet, but a taste that only a select few enjoy. Unfortunately, I’ve come to realise that our general distaste for parsing is problematic. While many of us think…

228

F (2006)

F is a pure functional concatenative language originally designed as an extension of False . F contains the list-operations of K3 and the dip combinator of Joy . Floating-point and symbolic datatypes are supported. One-time assignment is enforced in syntax. A theory of function-valence and -charge is outlined. F also…

234

Lambda Calculus Diagrams (2015)

The following table shows diagrams of identity, the booleans, some standard combinators, some Church numerals, the predecessor function on Church numerals, and Omega. term definition diagram alternative I/1 λx.x K/true λx.λy.x false/0 λx.λy.y S λx.λy.λz.(x z)(y z) Y λf.(λx.x x)(λx.f(x x)) 2 λf.λx.f(f x) 3 λf.λx.f(f(f…

236

Racket 7.8

Racket version 7.8 is now available from https://racket-lang.org/ Racket CS may become the default Racket implementation in the next release. With the improvements in this release, Racket CS provides all of the functionality of Racket BC (the curre...

238

I rewrote a Clojure tool in Rust

About two years ago, I wrote a quite complicated diff tool in Clojure. It was complicated enough that I struggled to fit the algorithm in my head and the inputs were large enough that I had to make some efforts to improve performance.