サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
災害への備え
www.stephendiehl.com
Web3 is Bullshit If you read tech journalism you’ll probably hear the fuzzy term web3 bandied about in the press. Sprinkled around all these articles are all manner of idealistic and utopian ideas about how we can rebuild the internet to reflect our aspirations of a more humane and egalitarian society. However the journalists never quite drill down into the details on the mechanisms of how the int
Haskell Problems For a New Decade It has been a decade since I started writing Haskell, and I look back on all the projects that I cut my teeth on back in the early part of this decade and realise how far the language and tooling have come. Back then Haskell was really barely usable outside of the few people who would “go dark” for months to learn it or those lucky enough to study under researcher
Reflecting on Haskell in 2017 Alas, another year has come and gone. It feels like just yesterday I was writing the last reflection blog post on my flight back to Boston for Christmas. I’ve spent most of the last year traveling and working in Europe, meeting a lot of new Haskellers and putting a lot of faces to names. Haskell has had a great year and 2017 was defined by vast quantities of new code,
Reflecting on Haskell in 2016 Well, 2016 … that just happened. About the only thing I can put in perspective at closing of this year is progress and innovation in Haskell ecosystem. There was a lot inspiring work and progress that pushed the state of the art forward. This was a monumental year of Haskell in production. There were dozens of talks given about success stories with an unprecedented am
A Sticky Stringy Quandary Anyone who has used Haskell in a professional setting knows that the String situation is kind of a mess. While in many ways the language is progressing at a rapid pace and is only ever getting more compelling for commercial use, the String situation is still regarded by many people as the largest problem in the langauge. And for good reason, an efficient textual type is a
Building a Better Custom Haskell Prelude The Haskell Prelude is the default import into all Haskell modules, it provides an endless number of ways to shoot ourselves in the foot and historical cruft that can’t be removed. While it is difficult to fix upstream, we can however remove the Prelude entirely on a project-level and replace it with a more sensible set of defaults using the -XNoImplicitPre
Cooking Classes with Datatype Generic Programming Haskell Generics are a somewhat misunderstood topic but are an extremely powerful technique for writing reusable and comparable interfaces across an enormous universe of types with very little effort. They are probably my favorite example of the advantages of an expressive type system endows us with. Source for examples code is available here. Gene
The Joy and Agony of Haskell in Production There have been several good talks about using Haskell in industry lately, and several people asked me to write about my personal experiences. Although I can’t give specific details I will speak broadly about some things I’ve learned and experienced. The myths are true. Haskell code tends to be much more reliable, performant, easy to refactor, and easier
Vim and Haskell in 2016 A couple of years I wrote about Haskell editor tooling and figured this deserved a bit of an update now that the tooling has become mature. So let’s walk through how we install an minimalist Haskell dev environment on Linux. If you don’t want to build the individual components youself, you can just download the source code. $ git clone --recursive https://github.com/sdiehl/
Monads to Machine Code Just-in-time or JIT compilation is compilation done by dynamically generating executable code. It’s a common technique used in many language runtimes to generate optimized code for hot code paths as well ahead of time compilation for various tasks. So let’s build a small LLVM-like intermediate language and JIT execution engine in Haskell. This will only function with modern
Reflecting on Haskell in 2015 It’s been quite a year in the language we know and love called Haskell both for me personally and as a community. Personally I’ve been fortunate enough to write quite a bit of Haskell professionally. It’s an interesting experience and changed my perspective quite a bit on the state of our profession. For the language and community side there’s been quite a bit of tech
Stephen Diehl (@smdiehl ) The source for all code is available here. If there are any errors or you think of a more illustrative example feel free to submit a pull request on Github. This is the third draft of this document. License This code and text are dedicated to the public domain. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permissi
A Haskell Implementation Reading List A reading list for those interested in the implementation internals of Haskell compilers. The GHC Reading list is more exhaustive, these are simply the papers I think give a good high-level overview of the topics. Typeclass Inference A Theory Of Qualified Types Type Inference For Parametric Type Classes Type Reconstruction For Type Classes Constraints For Type
From Adjunctions to Monads I thought I would share one of my favorite constructions in Haskell, namely that adjoint functors give rise to monads. Although it’s a trivial result in category theory how it manifests in Haskell is quite lovely. A Functor in Haskell maps objects and morphism (i.e. functions) in a subcategory of Hask to objects and morphisms of another category.
A Vim + Haskell Workflow This post is out of date and has been updated for modern workflow.This page is left for posterity. Hoogle Hoogle is a Haskell type search engine which can be used online or installed locally.
Implementing a JIT Compiled Language with Haskell and LLVM Adapted by Stephen Diehl ( @smdiehl ) This is an open source project hosted on Github. Corrections and feedback always welcome. Version 1: December 25, 2013 Version 2: May 8, 2017 The written text licensed under the LLVM License and is adapted from the original LLVM documentation. The new Haskell source is released under the MIT license. C
A Haskell Reading List Here is a list of papers and writings of what I consider are essential Haskell reading. Haskell 2010 Language Specification Typeclassopedia The Essence of Functional Programming How to make ad-hoc polymorphism less ad hoc Monads for functional programming Monad Transformers: Step-By-Step Some interesting features of Haskell’s type system Functional Programming with Bananas,
Haskell for Web Developers This blog post is somewhat dated and may not reflect changes to the ecosystem since 2013. The perpetual myth persists that Haskell cannot be used for “real world applications”. Normally real world is usually left undefined in such a discussion, but can often be taken to mean that Haskell is not suited for database and web development work. Haskell has a rich library ecos
Monads Made Difficult Caveat: This is not a monad tutorial, you should not read this to understand monads initially. If you aren’t already comfortable with monads and have used them in production code, please don’t read this. It will not impart any intution. This is a short, fast and analogy-free introduction to Haskell monads derived from a categorical perspective. This assumes you are familiar w
Navigating the Postmodern Python World If there is one defining feature of modern Python, it’s simply that is that the definition of Python itself is becoming increasingly blurred. Many projects over the last few years have taken larger and larger leaps to extend Python and reconstruct what “Python” itself means. At the same time on there are variety of technologies encroaching on Python’s niche,
Hi, I’m Stephen Diehl. I’m a software engineer in London, England. All written content on this site is provided under a Creative Commons ShareAlike license. All code is provided under a MIT license unless otherwise stated.
このページを最初にブックマークしてみませんか?
『www.stephendiehl.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く