昨日と今日は、去年参加させてもらった「ScalaMatsuri」改め初開催の「関数型まつり」に行ってきました。
1日目
ドメインモデリングにおける抽象の役割、tagless-finalによるDSL構築、そして型安全な最適化
DSLによってビジネスの本質を抽象化するアプローチと、それをtagless-finalを使って実現する方法が、個人的にはTypeScriptの型とプログラム側?を行き来するに似ている感じがしました。
関数型言語テイスティング: Haskell, Scala, Clojure, Elixirを比べて味わう関数型プログラミングの旨さ
この前すごいH本(通称がw)読了したばかりだったので、読み慣れたScalaコードと比較できて理解が深まりました。
関数型言語を採用し、維持し、継続する
プレゼンの中でも触れられてましたが、まさに”狂気”でした(褒め言葉)。これでビジネス側の要求に応えられる技術力すごい。。
Elmのパフォーマンス、実際どうなの?ベンチマークに入門してみた
ListとArrayのパフォーマンスの違いから、段階的にチューニングしてく過程は日常の業務でもちょくちょく遭遇するなーと思いました。
高階関数を用いたI/O方法の公開 - DIコンテナから高階関数への更改
”SpringのDIアノテーションがドメイン境界超えて滲み出ている”というのは、言われてみれば確かに…という気づきがありました。
continuations: continued and to be continued
継続という”発明”に至るまでの先人の工夫を歴史から知る事ができました。
What I have learned from 15 years of functional programming
「プログラムに対する考え方に影響を与えない言語は価値がない」(意訳)という言葉はグサッときました。
2日目
F#の設計と妥協点 - .NET上で実現する関数型パラダイム
F#に込められた意図(.NETとの相互互換性)から、自分の中でリサーチ言語というイメージだったのを払拭できるきっかけになりました。
マイクロサービス内で動くAPIをF#で書いている
コードの事例が実際に業務で使われている事を彷彿とさせる内容で、実際に使えるんだという可能性を感じる事ができました。
ラムダ計算と抽象機械と非同期ランタイム
算術式の評価がこれだけのシンプルな表現で処理できること、その中にも最適化できる余地があるのが驚きでした。
Leanで正規表現エンジンをつくる。そして正しさを証明する
ユニットテストでは何千行も書かなければ証明できないものが、定理証明だと少ない記述量で証明できる!というものではなさそうだと分かったのが個人的な収穫でした(汗)
数理論理学からの『型システム入門』入門?
型というアイデア自体が論理学に由来しているのは意外(似た別物かと思ってた)でした。
Scalaだったらこう書けるのにScalaが恋しくて(TypeScript編、Python編
TypeScriptやPythonも表現力が上がって追いついている(でも記述量はまだまだ多い)感じがしました。
Scala の関数型ライブラリを活用した型安全な業務アプリケーション開発
Scala3の新構文で実際の業務システム構築方法が一通り網羅されてて参考になりました。
AWS と定理証明 〜ポリシー言語 Cedar 開発の舞台裏〜
”AWSで実際に使われている”というのとその使われ方を見て、定理証明の可能性を再認識する事ができました。
おわりに
去年までのScalaMatsuriではScalaを通して関数型プログラミングの知見が広がった印象がありましたが、今年はより広範囲になる普段なかなか触れない分野の発表もあってとてもいい刺激を受ける事ができました。