スタッフセッション50分

関数型言語テイスティング: Haskell, Scala, Clojure, Elixirを比べて味わう関数型プログラミングの旨さ

lagenorhynque lagénorhynque/カマイルカ

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

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

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

  • 理論
  • 入門

セッションの概要

「関数型プログラミング」や「関数型言語」の定義に普遍の共通認識は存在しませんが、複数の(いわゆる)関数型言語にしばらく触れてみると、共通して重視されている概念や考え方、設計パターン、機能と思われるものも見えてきます。
Haskell, Scala, Clojure, Elixirという性質の異なる4つの関数型言語での特徴的なプログラミングスタイルを吟味(= テイスティング)してみることを通して、関数型プログラミングの中核にありそうなもの、周辺にありそうなもの、(直接的には)無関係そうなものについて一緒に考えてみましょう🍷

取り上げる(かもしれない)キーワード: 関数とその組み合わせ方いろいろ, 変換 vs 命令, 式指向 vs 文指向(cf. コードの形), よくある設計パターン/言語機能, 参照透過性, 不変性と永続性, 合成可能性, データ指向 vs オブジェクト指向, 再利用性と抽象度(cf. 命名), メタプログラミングと言語処理系, 関数型プログラマのメンタルモデル

スタッフセッション50分

「Haskellは純粋関数型言語だから副作用がない」っていうの、そろそろ止めにしませんか?

igrep 山本悠滋 (igrep)

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

なるべく Beginner から Advanced まで対象と出来るよう努力します。タイトルを聞いて何かしら感情が動いた方であればおすすめです。

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

  • 理論
  • 歴史

セッションの概要

「Haskellは純粋関数型言語だから副作用がないらしいけど、入出力処理などはどうやるんだろう?」というような疑問を抱えている方は多いでしょう。本発表ではHaskellの歴史と現状を顧みて、そのような疑問が生まれる背景や、「Haskellは副作用がない」と考えることの問題点と、それを踏まえて「副作用があるHaskell」という認識が普及した未来について論じます。関数型プログラミングやHaskellを学習する際ありがちな「思考の憑きもの」を祓う発表になれば幸いです。

1
スタッフセッション50分

Julia という言語について

antimon2 後藤 俊介

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

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

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

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

セッションの概要

2018年にver.1.0がリリースされた新言語 Julia について、自己の経緯をベースに関数型プログラミング(以降 FP と略記)の観点で紹介・解説します。

Julia はマルチパラダイムを謳っており、特別 FP に特化した言語というわけではありません。所謂『関数型言語』と呼ばれる他言語にはよくあるけれど Julia にはない機能・言語仕様もあります。一方で、動的言語でありながら構造的に設計された型システムを持ち、多重ディスパッチという機構とそこから導かれる強力なポリモーフィズム、また
Lisp 由来の『真のマクロ』などのメタプログラミング機構を持っています。その辺りを足がかりに、以下のような内容について紹介・解説します。

  • FP の観点で見る Julia の言語仕様(Julia の型システム、Julia の関数、イテレータ、並行・並列プログラミング、メタプログラミング等)
  • Julia で FP するためのエッセンス(関数合成、高階関数、パイプライン、等)
  • Julia でより FP するためのサードパーティライブラリ(パッケージ)の紹介(部品化+組み立て機構、モナドのエミュレーション、パターンマッチング、等)