User loginNavigation |
People of Programming Languages InterviewsThere is a growing set of fascinating interviews with PL folks at People of Programming Languages. By bashyal at 2017-12-31 15:17 | History | login or register to post comments | other blogs | 32947 reads
Exploiting Vector Instructions with Generalized Stream Fusion
Exploiting Vector Instructions with Generalized Stream Fusion
By Geoffrey Mainland, Roman Leshchinskiy, and Simon Peyton Jones. A.k.a. "Haskell beats C".
Our ideas are implemented in modified versions of the GHC compiler and vector library. Benchmarks show that high-level Haskell code written using our compiler and libraries can produce code that is faster than both compiler- and hand-vectorized C. This paper continues the promising line of research started in 1990 by Wadler (at least, that was how I learned of deforestation). Of course, there was a lot of development since then, but this specific paper introduces an interesting idea of multiple representations - potentially changing the game. By Andris Birkmanis at 2017-12-22 03:33 | Implementation | login or register to post comments | other blogs | 44333 reads
How efficient is partial sharing?Partial sharing graphs offer a reduction model for the lambda calculus that is optimal in a sense put forward by Jean Jacques Levy. This model has seen interest wax and wane: initially it was thought to offer the most efficient possible technology for implementing the lambda calculus, but then an important result showed that bookkeeping overheads of any such model could be very high (Asperti & Mairson 1998). This result had a chilling effect on the initial wave of excitement over the technology. Now Stefano Guerrini, one of the early investigators of partial sharing graphs, has an article with Marco Solieri (Guerrini & Solieri 2017) arguing that the gains from optimality can be very high and that partial sharing graphs can be relatively close to the best possible efficiency, within a quadratic factor on a conservative analysis (this is relatively close in terms of elementary recursion). Will the argument and result lead to renewed interest in partial sharing graphs from implementors of functional programming? We'll see... (Asperti & Mairson 1998) Parallel beta reduction is not elementary recursive. (Guerrini & Solieri 2017) Is the Optimal Implementation inefficient? Elementarily not. Is Haskell the right language for teaching functional programming principles?No! (As Simon Thompson explains.) "8th" - a gentle introduction to a modern ForthFound on the ARM community's embedded blog. It seems that Forth may be making a comeback.
Other differences from traditional Forth appear to include automatic memory management and some kind of signed and encrypted application deployment. [Edit: per gasche's comment, please note that 8th appears to be closed source. From their FAQ: By Allan McInnes at 2017-10-02 00:26 | Cross language runtimes | 17 comments | other blogs | 69561 reads
Project Loom: adding fibers and continuations to JavaJust saw this on Hacker News -- Project Loom: Fibers and Continuations for the Java Virtual Machine with the following overview:
I'm a fan of fibers, and this has quite a bit of interesting material in it for like-minded folks. Copattern matching and first-class observations in OCaml, with a macroCopattern matching and first-class observations in OCaml, with a macro, by Paul Laforgue and Yann Regis-Gianas:
Codata isn't well supported enough in languages IMO, and supporting it via a simple macro translation will hopefully make it easier to adopt, at least for any language with GADTs. Non-determinism: a sublanguage rather than a monad
Non-determinism: a sublanguage rather than a monad
A unified approach to solving seven programming problemsA fun pearl by William E. Byrd, Michael Ballantyne, Gregory Rosenblatt, and Matthew Might from ICFP: seven programming challenges solved (easily!) using a relational interpreter. One challenge, for example, is to find quines. Another is to find programs that produce different results with lexical vs. dynamic scope. The interpreter is implemented in miniKanren (of course), inside Racket (of course). By Ehud Lamm at 2017-09-04 18:44 | Fun | Functional | Logic/Declarative | 4 comments | other blogs | 45966 reads
ICFP 2017 live streamingIf you are one of the few LtU-ers not presenting (just kidding...), you can get your functional programming fix by following the live stream from ICFP, starting tomorrow at 11:00 (UK). Want to know when to tune in? Check out the incredible program! |
Browse archives
Active forum topics |
Recent comments
19 weeks 6 days ago
20 weeks 3 hours ago
20 weeks 3 hours ago
42 weeks 1 day ago
46 weeks 3 days ago
48 weeks 11 hours ago
48 weeks 11 hours ago
50 weeks 5 days ago
1 year 3 weeks ago
1 year 3 weeks ago