WorkshopTweetこんにちは。2019」に私が先月参加した際のレポートとして、印象深い発表をテーマごとに分けた短い記事を執筆します。8.8の話はもちろん、未来のGHCやその他のHaskellの処理系を知るのによいイベントでしたので、その一部だけでも伝われば幸いです。(HIW)とは?シリーズ(?)第1回目なので、簡単にHIWそのものについて紹介しておきましょう。Programming)という関数型プログラミングについての国際会議に併設された、Haskellの実装者のためのワークショップです。Talkの時間があったり、GHCの将来の方向性について自由に議論する時間もあったりしました。8.8で導入された機能」を紹介します。Extended」の略と思われます)ファイルについての発表です。EngineなどのIDEのバックエンドが再利用しやすい形で出力する機能です。APIやGHCiを呼ぶことで、型チェックしたり定義ジャンプに必要な位置情報を収集したりしていたのですが、そうした情報の収集をすべてGHC自身がHIEファイルを出力することで賄えるようになる、ということです。testとHIEを並行して実行させているのは、HIEがしばしばフリーズしてしまったり(Neovimごと再起動すれば直ることも多いんですが...😰)、HIEだけでは実行ファイルの作成やテストの実行ができない、という理由があるためです。testだけでHIEファイルが生成されるようになれば、エラーに関する情報やソースコードの解析結果といった情報が一元化されるので、より安定的に、より少ないリソースでHIEが使えるようになるでしょう。Engineがサポートする日が楽しみです。この、HIEファイルを利用するアプリケーションの例も紹介されました。(LSIF)」形式のファイルを作成するコマンドが印象的でした。このLSIFというファイルは、例えばGitHubのリポジトリ上でブラウザからソースコードを閲覧する際にも、定義ジャンプといった便利な機能を使えるようにするためのものです。Serverはじめ処理系を実行することなく利用できるようにするものだそうです。現状は仕様策定中なためか、実際にLSIFを解釈するアプリケーションは見つかりませんでしたが、今後の活用に期待が高まりますね。加えて、HIEファイルが将来的にサポートしたい機能などについても発表されました。8.8がもうすぐ出るよ、という内容の発表でした(発表当時。8.8はリリースされています)。言及された主な追加機能は以下のとおりです。TypeApplicationsという言語拡張が、型変数だけでなくカインド変数に対しても適用できるようになりました。正直に言って、個人的に使いどころがまだまだなさそうな機能ではありますが...。ScopedTypeVariablesという言語拡張を使った場合に、パターンマッチした変数に型注釈を付けることができるようになる、という機能がありまして、これが拡張されました。-}さらに拡張して、関数自体の型注釈にある型変数ではないIntと、パターンマッチした変数xに型注釈したbが等しくなるように書くことができるようにした、という拡張です。型変数でパターンマッチしているかのようですね。...と書くことで、長い型名に対して別名を付けることができるようになる、というメリットがあるそうです。tohereとりあえず今回はここまでテーマを絞って短い記事にした方がSEO的にいいんじゃないかと思いまして、今回は敢えて紹介する発表を絞りました。今後は下記のテーマについて紹介する予定です。2019の発表についても別途共有する予定です。ライセンスの下に提供されています。Analyticsでアクセス情報を収集しています。集めた情報は統計的に処理した上で、当ウェブサイトの改善のための参考情報としてのみ使用します。