Building a modern functional compiler from first principles. Stephen Diehl In 2014 I wrote a short tutorial about building a small imperative language in Haskell that compiled into LLVM. I was extremely happy with the effect the tutorial seemed to have, and the warm response I got from so many people was very encouraging. I've done a great bit of thinking about what the most impactful topic I coul
As part of my 6-month research secondment to Microsoft Research in Cambridge I am taking up the challenge of migrating the current GHC build system based on standard make into a new and (hopefully) better one based on Shake. If you are curious about the project you can find more details on the wiki page. During this week I’ve been trying to wrap my head around the current build system and so far I
QQALIENPOKER : Situs Login IDN Poker Uang Asli Domino QQ Online Resmi #1 QQALIENPOKER permainan kartu IDN Poker dan Domino QQ Online sungguh menyenangkan. Apalagi jika Anda bepergian bersama teman-teman Anda. Bukan hanya sekedar permainan kartu atau permainan kartu qq online saja yang asyik dan seru untuk dimainkan, namun kali ini permainan IDN Poker menjadi salah satu permainan kartu terbaik yang
Answer: It's hard to know what the "cleverest" optimizations are, but let me tell you what the most powerful optimisation is: inlining. Inlining is what makes abstraction layers completely go away, even across modules, and it's why we can write beautiful high-level code in Haskell and still have ...
Figure 5.3: The syntax of Core A typical structure for a compiler for a statically-typed language is this: the program is type checked, and transformed to some untyped intermediate language, before being optimised. GHC is different: it has a statically-typed intermediate language. As it turns out, this design choice has had a pervasive effect on the design and development of GHC. GHC's intermediat
Welcome to the QML Project A functional quantum programming language Home to the QML Research Diary QML is a functional language for quantum computations on finite types. The language introduces quantum data and quantum control structures, and integrates reversible and irreversible quantum computation. QML is based on strict linear logic, hence weakenings, which may lead to decoherence, have to be
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
Summary: I walk through optimising a Haskell string splitter to get a nice tight inner loop. We look at the Haskell code, the generated Core, C-- and assembly. We get down to 6 assembly instructions per input character. Let's start with some simple code: break (`elem` " \r\n$") src This code scans a string looking for a space, newline or $ and returns the string before and the string after. Our go
Google グループでは、オンライン フォーラムやメール ベースのグループを作成したり、こうしたフォーラムやグループに参加したりすることで、大勢のユーザーと情報の共有やディスカッションを行うことができます。
これはHaskell Advent Calendar 2013の(3+π)日目の記事です。 (3 + pi)や(quot 7 8)のような単純な定数式は、ghc -Oが行なう定数畳み込みによってコンパイル時に計算される。uncurry (*) (3, max 5 2)のようなやや複雑な式も、インライン展開してから定数畳み込みをすることでやはりコンパイル時に整数リテラルにまで簡約される。 これは一見万能だが、再帰的な関数が一つでもあると何もできなくなる。GHCが再帰関数をインライン化しないからだ。(sum [1])ですら実行時のループにコンパイルされる*1。 どうしてもコンパイル時に計算してほしい関数がある場合はどうしたら良いか。一つの方法はTemplate Haskell(ja)を使うことだが、特別な構文を使わなければいけないこと、-fwarn-unused-binds(ja)をはじめとし
hello mum");a.close()},find_slide_number:function(e){var c=e.indexOf("#");if(c<0){return 0}var b=unescape(e.substr(c+1));var f=document.getElementById(b);if(!f){var d=/\((\d)+\)/;if(b.match(d)){var a=parseInt(b.substring(1,b.length-1));if(a>this.slides.length){a=1}if(--a<0){a=0}return a}d=/\[(\d)+\]/;if(b.match(d)){var a=parseInt(b.substring(1,b.length-1));if(a>this.slides.length){a=1}if(--a<0){a=
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く