Idrisでの関数型プログラミング
December 26, 2025 · View on GitHub
注意:これはIdris2入門の原版ですが、現在は非推奨です。 現在のバージョンはIdris2コミュニティで維持されており、こちらにあります。 全ての修正や新しく貢献する際はそちらでお願いします。
このプロジェクトの目標を手短かに説明するとこうなります。 Idrisプログラミング言語の多少なりとも網羅的な手引きとし、関数型プログラミングの入門者を対象とした入門的な題材をちりばめることです。
内容は幾つかの部にまとまっています。
中核的な言語の特徴についての部は、Idrisでの関数型プログラミングのための手引きです。
各部は幾つかの章からなり、それぞれの章ではIdrisプログラミング言語や中核ライブラリの一側面を踏み込んで扱います。
ほとんどの章は(時に多くの)演習が付録しており、ディレクトリsrc/Solutionsに解法があります。
現時点では、中核的な言語機能の部分もまだ完了しておらず、活発に開発されているところです。 その開発には筆者の生徒の中からも数名挑戦しており、関数型プログラミングを完全に初めたばかりの人もいます。
目次
第1部:中核にある言語の特徴
この部ではIdrisプログラミング言語への導入を地道に一歩ずつ進めることを試みます。 もし関数型プログラミングが初めてであれば、必ず順番にこの部の章にしたがい、また全ての演習を解いてください。
Haskellのような他の純粋関数型プログラミング言語を使ったことがあるなら、 導入的な内容(関数 その1、代数的データ型、インターフェース)に素早く目を通すのでもよいでしょう。 ほとんどは既に馴染みのある事柄でしょうから。
- 導入
- 関数 その1
- 代数的データ型
- インターフェース
- 関数 その2
- 依存型
- IO: 副作用のあるプログラミング
- 関手と仲間達
- 再帰と畳み込み
- 作用付き巡回
- シグマ型
- 命題の等値性
- 前提と証明検索
- 原始型
第2部:補遺
補遺は身近な話題の参考情報として使えます。 最終的には、Idrisの文法、典型的なエラー文言、モジュールシステム、対話的編集などについての簡潔な参考情報にしようと模索しています。
予め必要なもの
現時点でこのプロジェクトは活発に開発中で、Idris 2リポジトリのmainブランチとともに進展し続けています。 GitHubでnightlyにテストされており、packのパッケージコレクションの最新版に対してビルドされています。
この入門を読み進めるにあたってはこちらに記載されているようにpackパッケージ管理を介してIdrisをインストールすることを強くお勧めします。