Haskell's kind system: a primer
In this post we’ll explore Haskell’s kind system, the similarities between types and kinds, and show how these can be leveraged to write safer and more reusable code.
Topics /
The most popular blog posts about programming languages on Hacker News. 361 posts.
In this post we’ll explore Haskell’s kind system, the similarities between types and kinds, and show how these can be leveraged to write safer and more reusable code.
Last year we held a machine learning seminar in our London office, which was an opportunity to reproduce some classical deep learning results with a nice twi...
ES modules bring an official, standardized module system to JavaScript. With the release of Firefox 60 in May, all major browsers will support ES modules, and there is current work ...
This is a tutorial on building your own shell using Rust, in the spirit of the build-your-own-x list. Creating a shell is a great way to understand how the shell, terminal emulator, and OS work together.
The Visitor Pattern is one of the most mis-understood of the classic design patterns. While it has a reputation as a slightly roundabout technique for doing simple processing on simple trees, it is actually an advanced tool for a specific use case: flexible, streaming, zero-overhead processing of complex data…
This document comes with a companion example program, available as one file or as multiple files (zipped) .
This is an essay I wrote early-2016. After battling with soundness vs. usability in Typed Clojure for many years, I was starting to reconsider the “obviously wrong” approach of baking unsoundness into the type system from the get-go. I look at some historical examples of intentional unsoundness in type systems, and…
Chris Lattner, the architect of the Clang/LLVM C compiler explained the effects of the C standard’s “undefined behavior”(UB):
Recently we’ve seen how WebAssembly is incredibly fast to compile, speeding up JS libraries, and generating even smaller binaries. We’ve even got a high-level plan for better interoperability between the ...
Emacs 26.1 was recently released . As you would expect from a major release, it comes with lots of new goodies. Being a bit of an Emacs Lisp enthusiast , the two most interesting new features are generators ( iter ) and native threads ( thread ).
Crystal 0.25.0 has been released!
Niko Matsakis recently blogged about the Rust compiler’s new borrow checker , which implements non-lexical lifetimes (NLL). The new borrow checker is a really nice improvement to Rust, because it accepts many sound programs that the old borrow checker rejected.
Sketches of Elixir : Friends, I am now at least in this respect a rare breed: an Elixir programmer who has never written Ruby. I was never a professional Erlang programmer. I cut my teeth on Python
While the modern programming language Haxe is well-known in some circles, many developers have never heard of it. Yet since it first appeared in 2005, it's been battle-tested by its loyal---if rather quiet---following. It boasts a pragmatic and mature combination of features for development in business, gaming, and ...
Before I start this post, let me preface it by saying that I’m not an experienced Rustacean by any means. The excellent foks at /r/rust gave a lot of helpful feedback and cleared up some misconceptions I had. Futher errata and corrections are appreciated. This post is aimed at helping other fledgling rust-learners…
This paper presents an evaluation of the use of a high-level language (HLL) with garbage collection to implement a monolithic POSIX-style kernel. The goal is to explore if it is reasonable to use an HLL instead of C for such kernels, by examining performance costs, implementation challenges, and programmability and…
How I finally decided what is better (for me), Lisp or Haskell?
A couple weeks ago, Galois and Immunant launched c2rust. Since I wrote one of the best-known C-to-Rust translation tools (Corrode), and since I worked for Ga...
So, given all of that, lets dive into the meat of the article. What are we going to accomplish in Clojure today?
Saturday December 1st at 5 a.m. UTC will mark the start of the fourth incarnation of Advent of Code, popular programming contest started back in 2015. The author describes Advent of Code (AoC) as “a series of small programming puzzles for a variety of skill sets and skill levels in any programming language you like”.
GraalVM challenges the status quo on the JVM. This newly-released just-in-time compiler brings substantial speed improvements and support for polyglot applications. It also allows us to translate our JVM bytecode into small self-contained native binaries. In this session we’ll explore Graal’s impact on Clojure. We’ll…