自作SML処理系「LunarML」の言語機能の実装も佳境に入ってきて(equalityやexception等の厄介な奴らはだいたい片付けた)、残すところは
- withtype (derived form)
- abstype(Successor MLに従いderived formとして実装する予定)
- signature
- functor
くらいとなってきている。
続きを読む自作SML処理系「LunarML」の言語機能の実装も佳境に入ってきて(equalityやexception等の厄介な奴らはだいたい片付けた)、残すところは
くらいとなってきている。
続きを読む事実上の標準なHaskell処理系であるGHCに貢献するというのが去年掲げた目標だったが、それがようやく実現したので報告する。ついでに、最近のGHC開発状況についても簡単にまとめてみる。
続きを読む2年ほど前からSML処理系を自作している。それがこの度、「動作するターゲットコード (Lua) を出力する」という重要なマイルストーンに到達したので記念に記事を書いておく。
この処理系については、2018年9月に開催された勉強会「ML Day #2」で進捗報告のLTをしたこともあった。(あれから2年も経ってまだこの段階かよ!)
続きを読む昨日からオンラインで「技術書典9」が始まっています。昨今のアレで今回はオンラインです。だめぽラボでは1年ぶりに技術書典に出展しています。
今回は既刊「Haskellで戦う競技プログラミング」の改訂第2版を出したほか、新刊「浮動小数点数小話」を出します。
続きを読む以前Windows環境が吹き飛んで秘蔵のMSYS2用設定ファイルが失われたことがあったので、改めてメモしておく。
続きを読む競技プログラミングでは、提出したプログラムが誤答(WA)だった場合に「どのような入力について」答えを間違えたのか(参加者には)分からないことが多いです。
こういう場合はエスパーするなり眼力でソースコードをぐっと睨んだりするとバグが発見できる場合もありますが、初心者にはそういうのは難しいでしょう。
この記事では、HaskellのQuickCheckというライブラリーを使って、「ランダムにテストケースを生成して素朴な解と一致するか」を自動で検証させます。QuickCheckはテストに失敗した場合に「どういう入力例に対して失敗したか」も教えてくれるので、デバッグにも役立ちます。
この記事は筆者が先日YouTubeに上げた動画を文章で書き直したものです。動画で触れられなかった・触れるのを忘れていた補足説明みたいなものも若干含んでいます。この記事と動画、両方見ていただけると嬉しいです。
続きを読む以前、Haskellで浮動小数点数の丸めモードを制御したいという話を書いた。
以前の記事では、丸めモードを変える方法としてはC言語のfesetroundだけを扱ったが、高速化するなら各アーキテクチャ固有の方法を使えた方が有利である。また、動的な丸めモード指定ではない静的な丸めモードについてもこの記事では触れる。
続きを読むHaskellはリストを操作する関数を多数提供しています。map, filter, foldあたりが代表的で、これらは他の言語でもおなじみかと思います。
一方で、scan系関数(scanl, scanr)は他の言語ではあまり見かけない気がします。同じ関数型言語のSMLやOCamlにも標準では入っていないようです。
この記事では、scan系関数がどういう場合に利用できるかを紹介します。
続きを読む