Haskell」カテゴリーアーカイブ

GHCへの私の貢献2023

この記事は Haskell Advent Calendar 2023 の6日目の記事です。


私はここ数年、HaskellコンパイラーであるGHCに貢献しています。この記事では、今年(2023年)に私が行った貢献を紹介します。

GHCの開発は独自ホストされたGitLab上で行われています。

続きを読む

Haskell/GHCのSIMDについて考える

最近のコンピューターの性能を活用するには、何らかの並列化が必須です。具体的にはSIMDの活用やマルチコア(それとGPU)です。プログラミング言語でこれらを利用できれば「C言語よりも速い」を名乗れます。この記事では並列化技術のうち、SIMDを考えます。

HaskellコンパイラーであるGHCにはSIMDのプリミティブ(データ型と関数)が実装されています。しかし、広く使われているとは言い難いです。

続きを読む

HaskellでつくるAArch64版MinCaml

前回の記事

ではBrainfuckコンパイラーを書きましたが、やはりレジスター割り付けもしないコンパイラーでは物足りないと思ったのでした。

コンパイラーを作るオンラインの教材として前回の記事ではMinCamlと「低レイヤを知りたい人のための〜」を挙げましたが、後者はレジスタ割り付けはやらないみたいなので、MinCamlをやっていくことにします。

単にAArch64対応させるだけなら元のMinCamlとの差分だけを書けば良いのですが、どうせなのでHaskellに移植します。

先に成果物を載せておくと、

です。

続きを読む

GHCいじくり日誌・AArch64編

ここ数日またGHCをいじっている。少し前にAArch64 NCGがマージされたのでその確認という意味が大きい。

前回の記事(3月):GHCに初めてコントリビュートした/最近のGHC動向

同ジャンルの記事(2020年10月):GHCデバッグ日誌

続きを読む

GHCに初めてコントリビュートした/最近のGHC動向

事実上の標準デファクトスタンダードなHaskell処理系であるGHCに貢献するというのが去年掲げた目標だったが、それがようやく実現したので報告する。ついでに、最近のGHC開発状況についても簡単にまとめてみる。

続きを読む

技術書典9に「浮動小数点数小話」を出します

昨日からオンラインで「技術書典9」が始まっています。昨今のアレで今回はオンラインです。だめぽラボでは1年ぶりに技術書典に出展しています。

今回は既刊「Haskellで戦う競技プログラミング」の改訂第2版を出したほか、新刊「浮動小数点数小話」を出します。

続きを読む

QuickCheckで競プロ用Haskellコードをデバッグする

競技プログラミングでは、提出したプログラムが誤答(WA)だった場合に「どのような入力について」答えを間違えたのか(参加者には)分からないことが多いです。

こういう場合はエスパーするなり眼力でソースコードをぐっと睨んだりするとバグが発見できる場合もありますが、初心者にはそういうのは難しいでしょう。

この記事では、HaskellのQuickCheckというライブラリーを使って、「ランダムにテストケースを生成して素朴な解と一致するか」を自動で検証させます。QuickCheckはテストに失敗した場合に「どういう入力例に対して失敗したか」も教えてくれるので、デバッグにも役立ちます。

この記事は筆者が先日YouTubeに上げた動画を文章で書き直したものです。動画で触れられなかった・触れるのを忘れていた補足説明みたいなものも若干含んでいます。この記事と動画、両方見ていただけると嬉しいです。

続きを読む