関数型まつり2025
採択
公募セッション25分
公募セッション Beginner 理論 Tips 入門

より安全で単純な関数定義

gakuzzzz がくぞ gakuzzzz
3

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

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

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

  • 理論
  • Tips
  • 入門

セッションの概要

静的な型付けを行う言語において、関数の制約を表現する方向性は二つあります。

一つは戻り値で制約を表現する方向

def max[A: Ordering](list: List[A]): Option[A]

もう一つは引数で制約を表現する方向

def max[A: Ordering](list: NonEmptyList[A]): A

このセッションでは、それぞれの違いについて認識するための型の Cardinality という概念を紹介します。
また、具体のシステムにおいてそれぞれの選択がどういった影響を及ぼすかを紹介し、普段のプログラミングにおいてどういったケースでどちらを選択したらよいかの指針を示します。