採択
公募セッション10分 (LT)
公募セッション Intermediate 言語処理系 Tips

Underground 型システム

ajfAfg Show

対象とする聴衆のレベル

  • Intermediate: 分野の基礎知識を持っている

セッションのテーマ

  • 言語処理系(コンパイラー、インタープリターなど)
  • Tips

セッションの概要

型システムはある種のバグを静的に検査可能な手法で、多くの型システムは健全性を満たします。つまり、型システムが言うことは全て正しいです。

一方で、実世界の型システムは、ひょんなことから健全性を破壊する「穴」が存在していたりします。怖いですね。
本トークでは、Java や Rust、OCaml など、実世界のプログラミング言語における型システムの「穴」を概観します。罠を事前に知ることで、実際にハマったときの素早い対処や、プログラミング言語への深い理解が期待されます。

1
採択
公募セッション25分
公募セッション Beginner 入門 理論

数理論理学からの『型システム入門』入門?

schwmtl ほとけ/Motoki Shakagori

対象とする聴衆のレベル(該当するレベルを記載してください。)

  • Beginner: 分野の前提知識を必要としない

セッションのテーマ(該当するテーマを記載してください。なければ追加頂いて良いです)

  • 理論
  • 入門

セッションの概要

本セッションは、数理論理学を学ぶことによって型システム理論への入門が容易になると主張するものです。
発表者はかつて『型システム入門』の勉強会に参加していましたが、参加者の一部はプログラマではないにもかかわらず、ときに職業プログラマーである発表者よりも、深く内容を理解できていました。彼らは、数理論理学に深く通じているという点で共通していました。
なぜ数理論理学の知識が型システム理論の理解を助けるのでしょうか?それは、静的型付け言語における操作的意味論と型システムの関係が、論理学における意味論と証明体系の関係に対応するからだと発表者は考えています。つまり、論理学に詳しい彼らにとって、『型システム入門』の内容はとても馴染みのあるものだったのです。
そこで本発表では、『型システム入門』への入門を目論んでいる方々に向けて、あえて数理論理学を経由することを提案します。セッションは次のような内容を含みます。

  • 論理学における意味論・証明体系の概要と、両者の関係
  • 静的型付け言語における操作的意味論と型システムの概要と、両者の関係
  • まとめとして、論理学と型システム理論の類似性
6
採択
公募セッション10分 (LT)
公募セッション Beginner 言語処理系

XSLTで作るBrainfuck処理系 ― XSLTは関数型言語たり得るか?

makki_d MakKi

対象とする聴衆のレベル(該当するレベルを記載してください。)

  • Beginner: 分野の前提知識を必要としない

セッションのテーマ(該当するテーマを記載してください。なければ追加頂いて良いです)

  • 言語処理系(コンパイラー、インタープリターなど)
  • 難解プログラミング言語

セッションの概要

XSLTはXMLを変換するためのテンプレート言語ですが、関数型プログラミング言語とよく似た特徴を持っています。
本発表では、XSLTを関数型言語として捉え、実際にBrainfuck処理系を実装した事例を紹介します。
テンプレート適用によるパターンマッチ、変数の不変性、再帰的な処理といった関数型的な特徴を活用し、
ループや状態管理をXSLTでどのように記述できるかを具体的なコードとともに解説します。
Brainfuckのようなチューリング完全な処理系を実装できることから、XSLTもチューリング完全なプログラミング言語であることを示します。
この実装を通じて、関数型プログラミングの視点を広げるきっかけになれば幸いです。

1
採択
公募セッション25分
公募セッション Beginner Intermediate 入門 ライブラリ/フレームワーク Tips

高階関数を用いたI/O方法の公開 - DIコンテナから高階関数への更改 -

momoiroshikibu Kosuke Matsuura

対象とする聴衆のレベル(該当するレベルを記載してください。)

  • Beginner: 分野の前提知識を必要としない
  • Intermediate: 分野の基礎知識を持っている

セッションのテーマ(該当するテーマを記載してください。なければ追加頂いて良いです)

  • 入門
  • Tips
  • ライブラリやフレームワーク

セッションの概要

高階関数を用いたI/Oの実現方法について、TypeScriptでの例をご紹介します。

関数型プログラミングでは、高階関数や部分適用を活用することで、DIコンテナに依存することなくI/Oを実現することができます。
私の周りでは、オブジェクト指向プログラミングやそのフレームワークに慣れ親しんだプログラマーが関数型プログラミングを学び始める際に、
以下のような戸惑いを感じるケースを見てきました。

  • DIコンテナ無しで依存関係をどのように解決するのか分からない
  • 関数型のアプローチにはDIコンテナを置き換える手段が存在しないように感じられる

私自身も関数型プログラミングを学び始めた当初は、同様の戸惑いを感じていました。
オブジェクト指向プログラミングでは、フレームワークが提供するDIコンテナを使うことは一般的です。
これに慣れていると関数型プログラミングでの設計にギャップを感じることがあります。

私は関数型プログラミングが楽しいですし、実用性も感じています。もっと広まってほしいと願っています。
しかし、上記のような理由で、関数型プログラミングの学習に躓いたりすることもあると思います。

今回のトーク内容としては、以下のような内容を予定しています。

  • 高階関数と部分適用の説明
  • 高階関数を使ったI/Oの例やテストの書き方
  • 実際のWebアプリケーションでの適用例

高階関数や部分適用は実用的なテーマですし、I/Oの実現方法についても関数型プログラミングの魅力の一つだと感じます。
このセッションを通じ、より実用的な関数型プログラミングの知識を共有できると嬉しいです。

1
採択
公募セッション25分
公募セッション Beginner 入門 ライブラリ/フレームワーク Tips

「ElixirでIoT!!」のこれまでとこれから

takasehideki takasehideki

対象とする聴衆のレベル

  • Beginner: 分野の前提知識を必要としない

セッションのテーマ

  • ライブラリやフレームワーク
  • Tips
  • 入門

セッションの概要

「ElixirでIoT!!」と Erlang & Elixir Fest 2019 で喧伝しだしてから早くも5年以上の月日が流れてきました.
提案者はこれまで,「ElixirはIoT向きのプログラミング言語である」という旗印のもとで,IoTシステムに使える(はずの)さまざまなライブラリやプラットフォームをElixirで作ってきて,そしてそれらの価値を指し示すための「論よりRUN!!」なデモをお見せしてきました.
今回の発表では,どのような技術的思考と願望からこのような活動を進めてきたのか,そして得られてきた研究開発の成果を振り返りたいと思っています.
そして,提案者は正直に申し上げると,関数型言語はElixirしか分かっていません.参加される皆さまそれぞれに思い思いの「推し」があるはずですので,それらもIoT開発に使えるのか?使うとしたらどういう素敵なことが起きるのか?ざっくばらんに語り合えたらと考えています.

  • マクラ:IoTシステムとは?広域分散とは?
  • なぜ「ElixirでIoT!!」なのか?
    • アクターモデル由来の疎結合アーキテクチャ
    • Erlang/OTP由来の軽量かつ堅牢な並行プロセスモデル
    • そして言語機能と完全互換なNervesプラットフォーム
  • これまで作ってきたものと「論よりRUN!!」
    • Rclex: Elixirエコシステムと連携するロボットシステム向けAPIライブラリ
    • Zenohex: クラウド/エッジ連携に柔軟な通信プロトコルZenohのAPIライブラリ
    • Giocci: 広域分散システム向けの資源透過型計算プラットフォーム
  • 「〇〇でIoT!!」はあなたの関数型言語で成立するのか??
採択
公募セッション25分
公募セッション Beginner 導入事例

産業機械をElixirで制御する

kikuyuta 菊池 豊

対象とする聴衆のレベル(該当するレベルを記載してください。)

  • Beginner: 分野の前提知識を必要としない

セッションのテーマ(該当するテーマを記載してください。なければ追加頂いて良いです)

  • 導入事例

セッションの概要

関数型言語の応用例として、制御をElixirで行った小水力発電所の例を紹介します。現在の産業機械の制御に使われてるハードウェア・ソフトウェアは多くの問題を抱えており、それを近代化する手法の一つにElixirの導入があると考えています。セッションではおおよそ以下の話をする予定です。

  1. 産業システム制御における課題点
  2. 小水力発電所の解説
  3. 小水力発電でElixirを使う判断をした経緯
  4. 産業でElixirを使うためにハードウェアを開発した話
  5. 実際の応用例
    このセッションで実社会における現実の課題にどのように関数型言語を役立てていけるかの議論ができると嬉しいです。
1
公募セッション25分
公募セッション

なぜ、Maybeのことを「失敗しうる計算」だと考えないべき(あるいは、考えるべき)か

Kory__3 Kory

対象とする聴衆のレベル

Intermediate。do式(Haskell)/for式(Scala)/qdo!マクロ(Rust)などを使って、エラーが起こりうる処理を書けることを想定します。

セッションのテーマ

  • 理論
  • 入門

セッションの概要

関数型プログラミングの初学者向けの説明では、しばしば、Maybe(Scala/Rust のOption)は「失敗しうる」ような「文脈」/「計算」であると説明されます。Scala で言うfor { a <- f1(); b <- func2(a) } yield bが、Rust で言う question mark operator による early-return(let a = f1()?; let b = f2(a)?; Ok(b))と同等である、という観察を提示されることによって、Maybeが「失敗しうる計算」を表しているという言説に納得している方も多いかもしれません。

しかし、これらの例をよく観察してみると、「失敗しうる」のは「Maybe aを計算する処理片」などであって、個々のMaybe値は「失敗しうる」という性質を持っていないように見えてきます。特に、個々のMaybe値というのはJust xNothingという具体的な値であり、これらが「計算」や「文脈」の概念を内包しているようには到底見えません。Maybeによるdo/forが「失敗しうる処理」を表現できていることには(先程の Scala/Rust の対比から)納得できるかもしれませんが、Maybeそのものが失敗/成功の概念を果たして内包しているでしょうか。

この講演は、この(しばしば見落とされている)ギャップに焦点をあてて、「失敗しうる計算」という現象を、多段階計算/メタプログラミング的な視点を導入することで整理することを試みます。特に、以下の点について詳しく見ます。

  • Maybeの個々の値は本当に成功/失敗の概念を持つが、それ自体は early-return 的な操作とはかけ離れていること
  • それでも普段は、Maybeのことを(ナイーブに)「失敗しうる計算」だと考えるべきだということ
  • では、この概念の切り分けがいつ役に立つのか
6
採択
公募セッション25分
公募セッション Beginner Intermediate 理論 ライブラリ/フレームワーク 導入事例

デコーダーパターンによる3Dジオメトリの読み込み

unsoundscapes Andrey Kuzmin

対象とする聴衆のレベル(該当するレベルを記載してください。)

  • Beginner: 分野の前提知識を必要としない
  • Intermediate: 分野の基礎知識を持っている

セッションのテーマ(該当するテーマを記載してください。なければ追加頂いて良いです)

  • 理論
  • ライブラリやフレームワーク
  • 導入事例

セッションの概要

OBJファイルフォーマットから3Dジオメトリを読み込むために、elm-obj-fileパッケージを使ってデコーダーパターンを使う方法を説明します。OBJフォーマットにはglTFのシーングラフのような最新の機能はありませんが、デコーダーパターンを使うと:

  • 3Dモデルの必要な部分だけを読み込めます(オブジェクト名、マテリアル、グループで)
  • 複数のプリミティブタイプを読み込めます(点、線、三角形、面、テクスチャ付きメッシュ)
  • 座標系と単位を変換できます
  • シンプルなデコーダーを組み合わせて、複雑な形状を作れます

Blenderから作ったモデルをウェブアプリケーションに読み込む実例を示します。

トークの内容:

  1. デコーダーパターンの説明
  2. OBJフォーマットへのパターンの適用
  3. Blenderとelm-3d-sceneやelm-physicsを使った実例

得られること:

  • 複雑なデータフォーマットを解析するためのデコーダーパターンの使い方
  • 関数型プログラミングによるファイルフォーマットの柔軟な扱い方
  • Elmで3Dモデリングソフトとウェブアプリケーションを連携させる方法
1
採択
公募セッション10分 (LT)
公募セッション

CoqのProgram機構の紹介 〜型を活用した安全なプログラミング〜

_toku_san Hiroki Tokunaga

Coqには、証明付きプログラミングを容易にする Program 機構があります。本LTでは、この Program 機構の概要とその利用例を紹介します。

この機能を紹介する題材として、インデックスを用いたリストの要素取得を取り上げます。Coq において、指定したインデックスにあるリストの要素を取得する場合、通常は option 型を返すか、指定したインデックスに要素がない場合に備えて、あらかじめデフォルト値を渡す必要があります。しかし、指定したインデックスがリストの長さ未満ならば、毎回 Some が返ってくることは明らかです。

本LTでは、Program 機構を活用し、インデックスがリストの長さ未満であることが前提の場合に、option 型を用いず、またデフォルト値を与えることなくリストの要素を取得できることを紹介します。「Coqにこんな機能があるのか!」と興味を持ってもらえたら幸いです。

公募セッション25分
公募セッション

「関数型」の特性から考える「もう怖くないドメインモデリング」のアプローチ

takuuuuuuu777 佐藤 拓人

対象とする聴衆のレベル

  • Beginner: 分野の前提知識を必要としない

セッションのテーマ

  • Tips
  • 入門

セッションの概要

「関数型」に基づく事象のとらまえ方をすることで、専門性が必要で敷居が高いように思われる「ドメインモデリング」を容易に実現できるアプローチを提案します。

筆者バックグラウンド

「関数型プログラミング」についてまだまだ馴染みがないエンジニアが多いように思いますし、私自身も最近触り始めた程度で、まだまだ詳しくありません。実務では手続型の実装が多く「オブジェクト指向」に基づく思考プロセスでドメインモデリングや / 設計 / 実装をしていました。上手く実装できている手応えもある一方で、ドメインモデリングが「特定の人しかできない」「人によって考え方が大きく変わってしまう」...などスケールが難しい状況となっていました。
そんな中書籍「関数型ドメインモデリング」から、「オブジェクト指向」をベースにするより「関数型」をベースにした思考プロセスの方が、「より直感的で」「複雑なことをせずに実現可能である」...という気づきを得ることができました。その後「関数型」の思考プロセスをベースにした「ドメインモデリング」の実践方法を整理し、チームで実践してきました。

上記の経験を踏まえ「関数型のアプローチの何が優れているのか」「実際にどんなアプローチをしているのか」についてお話しします。

採択
公募セッション50分
公募セッション Intermediate Advanced 理論 言語処理系 ライブラリ/フレームワーク 導入事例 Tips

Hasktorchで学ぶ関数型ディープラーニング:型安全なニューラルネットワークとその実践

junjihashimoto3 橋本順之

対象とする聴衆のレベル

  • Intermediate ~ Advanced

セッションのテーマ

  • ライブラリやフレームワーク
  • 導入事例
  • 言語処理系
  • 理論
  • Tips

セッションの概要

Hasktorchは、Haskellでディープラーニングを行うためのライブラリであり、関数型プログラミングの強みである型安全性を活かしながら、PyTorchの強力な計算エンジンを利用できます。本セッションでは、Hasktorchの基本的な使い方に加えて、セットアップ方法やJupyter Notebookを活用したインタラクティブな開発フローについても解説します。

特に、次のようなトピックをカバーします:

  • Hasktorchの概要とエコシステム
  • Hasktorchのセットアップ
  • Jupyter NotebookでのHasktorch活用
  • 実際のニューラルネットワーク構築
  • パフォーマンス最適化とFFIを用いたメモリ管理
  • Hasktorchの今後と活用の可能性

このセッションでは、コードデモを交えながら、Hasktorchを実際に動かしながら学べる内容を提供します。関数型プログラミングを活かしたディープラーニングに興味のある方はぜひご参加ください!

採択
公募セッション50分
公募セッション Beginner 入門 ライブラリ/フレームワーク

Elixir で IoT 開発、 Nerves なら簡単にできる!?

pojiro3 pojiro

対象とする聴衆のレベル

  • Beginner: 分野の前提知識を必要としない

セッションのテーマ

  • ライブラリやフレームワーク
  • 入門

セッションの概要

Elixir は Erlang VM 上で動作し、高い並行性と耐障害性を持つ関数型言語です。特に Web フレームワーク Phoenix によってサーバサイドでの利用が広まっています。

本セッションでは、Elixir (Erlang) の並行性と耐障害性を支える仕組み(OTP)を紹介し、それが IoT の分野でも有効であることを説明します。
そして、サーバサイドの Elixir 開発をシームレスに IoT 開発へ適用できるオープンソースのプラットフォーム Nerves を紹介します。

  • OTP の強みが IoT でも活かせること
  • どのように Nerves (の構成)が Elixir の開発体験を IoT にシームレスに拡張しているか
  • ファームウェアの OTA(Over The Air)アップデートを提供する NervesHub について
  • 実機を使った簡単なデモ

Nerves は Raspberry Pi や BeagleBone などの安価なシングルボードコンピュータを公式にサポートしており、ホビー開発からプロトタイプ開発まで気軽に始めることができます。
サーバサイド Elixir の開発体験をそのまま IoT に活かせる Nerves の魅力を伝えられたらと思います。

1
公募セッション25分
公募セッション

F#とF#+で始める関数プログラミング

TTTaison T.T

対象とする聴衆のレベル(該当するレベルを記載してください。)

  • Beginner: 分野の前提知識を必要としない
  • Intermediate: 分野の基礎知識を持っている

セッションのテーマ(該当するテーマを記載してください。なければ追加頂いて良いです)

  • 入門
  • ライブラリやフレームワーク

セッションの概要

新卒入社後、1年ほどF#での開発に携わってきた経験をもとに、F#の基本機能であるコンピュテーション式から、F#+を使った拡張までこのLTでお伝えできたらと思います。コード例や実際のユースケースを交えながら、以下のトピックをわかりやすく解説予定です。

  • コンピュテーション式
    • F#のコンピュテーション式の基本
    • モナドコンピュテーション式
  • モナドトランスフォーマー
  • Readerモナド
    これから F# を始めたい方や、F#の機能をもっと使いこなしたい方におすすめの入門セッションです。実務経験で得た知見も交えながら、F# を活用する楽しさと利点をお伝えできたらと思います。
3
公募セッション10分 (LT)
公募セッション

30年前に「関数型言語」でプログラミングを学んだ話

ShirayanagiRyuj エンジニアカウンセラー 白栁隆司

対象とする聴衆のレベル

  • Beginner: 分野の前提知識を必要としない

セッションのテーマ

  • 入門
  • 思い出話

セッションの概要

30年前、初めて触ったプログラミング言語。「日本語ロゴライター」。
唯一無二の「タートルグラフィックプログラミング言語」ですが、その作法は関数的であり、オブジェクト(亀)な素養もありました。
その後、C言語で本格的に関数型手続き言語を学ぶまでのおよそ3年間の記憶から、現代の関数型プログラミングに通じるノウハウを掘り起こしてみましょう。
という名の主に思い出語りです。

公募セッション25分
公募セッション 関数型まつりスタッフ

型安全な静的サイト開発:elm-pagesで作る関数型まつりWebサイト

戸塚孝高

対象とする聴衆のレベル(該当するレベルを記載してください。)

  • Beginner: 分野の前提知識を必要としない
  • Intermediate: 分野の基礎知識を持っている

セッションのテーマ(該当するテーマを記載してください。なければ追加頂いて良いです)

  • 導入事例
  • ライブラリやフレームワーク
  • Tips
  • 入門

セッションの概要

「関数型まつり」のWebサイトを構築するにあたり、 elm-pages というフレームワークを採用しました。
本発表では、elm-pagesの特徴や採用の理由、実際の開発プロセスを紹介しつつ、Elmを用いた静的サイト開発のメリット・課題について考察します。

  • elm-pagesとは? 他の静的サイトジェネレーターなどとの比較
  • 関数型まつりWebサイトでの適用事例
    • 選定理由と導入の流れ
    • 開発時の工夫やハマりどころ
  • Elmで静的サイトを作るメリットと課題
    • 型安全なデータ管理とバグの少なさ など
    • 実運用における課題
採択
公募セッション25分
公募セッション Intermediate Tips 関数型まつりスタッフ

Scalaだったらこう書けるのに~Scalaが恋しくて~(TypeScript編、Python編)

takezoux2 竹下義晃/takezoux2

対象とする聴衆のレベル

  • Intermediate: 分野の基礎知識を持っている

セッションのテーマ

  • Tips

セッションの概要

Scala歴10年超のエンジニアが、TypeScriptやPythonを書く際にScalaならこう書けるのに!というあるあるを紹介していきます。
型周りの話から、パフォーマンスの話まで、実際に業務で書いていて感じたところを紹介していきます。
TypeScriptやPythonで、関数型スタイルのライブラリを導入して無理やり実現してみて、それでもまだ足りない!ところまで踏み込みます。
Scalaに未練タラタラの内容です。

次のライブラリ/機能にも少し触れます

対象聴衆

  • Scalaを使っていて、TypeScriptやPythonも同時に使っている人
3
採択
公募セッション25分
公募セッション Beginner 入門 言語処理系 周辺ツール ライブラリ/フレームワーク

Gleamという選択肢

Comamoca_ こまもか

対象とする聴衆のレベル(該当するレベルを記載してください。)

  • Beginner: 分野の前提知識を必要としない

セッションのテーマ(該当するテーマを記載してください。なければ追加頂いて良いです)

  • ライブラリやフレームワーク
  • 周辺ツール(ビルドツール、静的解析ツール、エディターなど)
  • 言語処理系(コンパイラー、インタープリターなど)
  • 入門

セッションの概要

昨年v1に達したGleamという静的型付けな関数型言語があります。
この言語はErlang VM(BEAM)とJavaScript(Node.js/Deno/Bun)で実行でき、ifやforなどが存在しないなど非常にシンプルな構文を持っているという特徴があります。

Erlang VMは並列性と耐障害性に優れた処理系で、
主にゲームサービスや通信システムなど大量に同時接続されたりサーバーや高い可用性が求められるシステムにおいて採用されています。

現在のGleamエコシステムはバックエンドフレームワークであるwispや、
フロントエンドフレームワークであるLustreなど様々なライブラリ・フレームワークが登場しています。

本登壇を通して始め方や周辺ツールの導入方法からGleamという言語の強みやエコシステムの現状、今後のGleamの可能性などを紹介していきます。

5
採択
公募セッション25分
公募セッション Intermediate ライブラリ/フレームワーク

iOSアプリ開発で関数型プログラミングを実現するThe Composable Architectureの紹介

yimajo Imajo Yoshinori

対象とする聴衆のレベル

  • Intermediate: 分野の基礎知識を持っている

なるべくSwift言語や関数型プログラミングの前提知識を必要としないように説明したいとは思いますが、たとえばクロージャが何かという説明などは省略します。

セッションのテーマ

  • ライブラリやフレームワーク

セッションの概要

みなさんは関数型プログラミングの説明を読む時、「それで結局何ができるようになるのか?」または「どんな課題を解決するのか?」と感じたことはありませんか?私自身そう感じることが何度もあります。

本発表では、まずiOSアプリ開発を知らない方向けに、iOS開発で課題となる状態管理やコードのテストについて説明します。そして、それらが関数型プログラミングの考え方をベースにしたOSSフレームワーク『The Composable Architecture (TCA)』によって、どのようにシンプルな形で解決されるのかを解説します。

1
採択
公募セッション10分 (LT)
公募セッション Beginner 入門

Excelで関数型プログラミング

excelspeedup はけた

対象とする聴衆のレベル(該当するレベルを記載してください。)

  • Beginner: 分野の前提知識を必要としない

セッションのテーマ(該当するテーマを記載してください。なければ追加頂いて良いです)

  • 入門

セッションの概要

Excel 2021でLAMBDA関数が実装されてExcelの数式はチューリング完全になるとともに、MAP、REDUCE関数などの関数型プログラミングでよく使われる関数も実装されました。

また、Excelは、数式は常に返り値を持つことに加え、データは完全にイミュータブルで、ほとんどの場合に参照等価性を持っているなど、関数型言語としての特徴も有しています。

そこで、今回のセッションでは、Excelを使って関数型プログラミングの初歩的な処理をする方法を紹介しようと思います。

  • Excel特有の配列の挙動(1次元配列と2次元配列)についての解説
  • スピルとmap、zipWith、bind
  • MAP関数、REDUCE関数など基本的な関数の使い方
  • LET関数とLAMBDA関数を使った再帰処理の書き方
  • Excel関数による記述の制約・限界
  • Excel関数でパーサコンビネータを作りJSONを解析する
1
採択
公募セッション50分
公募セッション Beginner Intermediate 言語処理系

F#の設計と妥協点 - .NET上で実現する関数型パラダイム

猪股 健太郎

対象とする聴衆のレベル(該当するレベルを記載してください。)

  • Beginner: 分野の前提知識を必要としない
  • Intermediate: 分野の基礎知識を持っている

セッションのテーマ(該当するテーマを記載してください。なければ追加頂いて良いです)

  • 言語処理系(コンパイラー、インタープリターなど)

セッションの概要

F#は.NETプラットフォーム上で実装された実用的な関数型言語です。本セッションでは、F#の言語設計における特徴的な選択と制約について解説します。

まず、非純粋関数型言語としてのF#の特徴を説明します。副作用の扱い方、関数型の機構とオブジェクト指向プログラミングの共存、そして実用性を重視した設計判断について概観します。

次に、F#独自の機能であるコンピュテーション式と非同期処理を取り上げます。HaskellのMonadやScalaのfor式との比較を交えながら、DSLとしての表現力や、非同期プログラミングモデルの特徴を示します。

最後に、.NETプラットフォームがF#の型システムに与える影響と制約について説明します。メソッドオーバーロードと型推論の相互作用、高カインド型の欠如、そしてそれらの制約に対する解決策としてのSRTPなど、実践的な観点から解説します。

2