BlockArguments で括弧を書かない生活を送る

2020年07月05日に投稿 • カテゴリ:プログラミング言語 • タグ:HaskellGHCGHC拡張

GHC 8.6 から BlockArguments という拡張が入った.これは構文拡張で,Haskell 2010 で必要だった幾つかの括弧を省略できるようにするもの …

続きを読む

DerivingVia で deriving 戦略を模倣する

2020年03月30日に投稿 • カテゴリ:プログラミング言語 • タグ:GHCHaskellGHC拡張

Haskell では、ボイラープレートは非常に嫌われており、それを撲滅するため強力な型システムの他にも幾つか機能が組み …

続きを読む

型クラスの Coherence と Orphan Instance

2020年03月20日に投稿 • カテゴリ:プログラミング言語 • タグ:HaskellGHC型クラス

Haskell には型クラスと呼ばれる重要な機能がある.これは名前の通り,型をクラス分けするための機能で,その型に対して …

続きを読む

AtCoder の新環境テストの問題を解いてみる

2020年02月17日に投稿 • カテゴリ:学習 • タグ:HaskellGHCAtCoder競技プログラミング

AtCoder が現在新環境のテストをしている: https://atcoder.jp/contests/language-test-202001

今までの環境では GHC 7.10.3 だったのが,新環境では 8.6.5 になるの …

続きを読む

State モナドの代わりに Reader モナドを使う

2020年01月31日に投稿 • カテゴリ:プログラミング • タグ:HaskellGHCモナド

注意
この記事は公開当時主張に誤りを含んでいたため,大幅に書き直しています.また,公開当時の主張の誤りについ …
続きを読む

多相関数を第一級で取り扱う

2019年12月07日に投稿 • カテゴリ:プログラミング言語 • タグ:HaskellGHC拡張GHC多相関数

今回は,GHC拡張の一つ RankNTypes の紹介をしようと思う.もうちょっとちゃんとまとめたのをいつか Haskell-jp かどっかに投稿したいと思ってる …

続きを読む

type family を使って再帰的 ADT をオープンにする

2019年11月17日に投稿 • カテゴリ:プログラミング • タグ:HaskellGHCGHC拡張

元ネタは Trees that grow . Haskell では代数的データ型 (ADT) を使ってプログミングに使うデータ構造を定義し,その構造を操作するこ …

続きを読む

リテラルをコンパイラ時にチェックする

2019年10月28日に投稿 • カテゴリ:フレームワーク • タグ:HaskellGHCリテラルGHC拡張

Haskell はいくつかのリテラルで型クラスを使用したオーバーロードを許容している.例えば,Haskell で 1 と書いた場合,この型 …

続きを読む

Local Do と型クラス

2019年07月27日に投稿 • カテゴリ:プログラミング言語 • タグ:HaskellGHCGHC拡張do構文型クラス

現在, GHC に 線形型の提案 がされていて活発に議論されている.プロトタイプも ここ から利用可能だ. Docker イメージも利用 …

続きを読む

Call Arity と融合変換

2019年07月26日に投稿 • カテゴリ:プログラミング言語 • タグ:HaskellGHC融合変換コンパイラ最適化

GHC は,最適化のため Call Arity と呼ばれるコード解析を行っている.この解析で,自由変数が何個引数を持っていいかを判定 …

続きを読む