本記事は、M3 Advent Calendar 2025 14日目の記事です。 はじめまして。エンジニアグループ、コンシューマーチームの松本と申します。 今回は、「継続 - Continuation」の本質を理解し、Promiseやasync/awaitでは解決できない課題を明らかにした上で、それを乗り越えるEffect Systemについて解説します。 「継続 - Continuation」とは? コールバック関数は継続そのもの 継続と非同期処理、副作用 継続の課題:コールバック地獄 継続渡しスタイル(Continuation-Passing Style, CPS) CPSの問題点:継続のネスト 継続の合成:Promise と async/await Promise(継続を合成する) async/await 継続だけでは解決できない課題 課題1: どんなエラーが発生しうるか、型から分から

Scala - Qiita Advent Calendar 2025 - Qiita 大規模なソフトウェアを書くときに厄介なものの一つに、可変なデータの取り扱いが挙げられるでしょう。例えば、意図しない箇所でいつの間にかデータが書き換わっていたり、使うべきではないタイミングでリソースを使ってしまうことなど。Rustのような言語は所有権(やライフタイム)によりこれらの課題を解決します。が、これをScalaのようなGCを前提とした言語に良い感じ(既存のプログラムに大きな影響を与えずに)に取り込むにはどうすればよいでしょうか? つまり、リソースへのアクセス権限(capability)(Object-capability modelではオブジェクト)のトラッキングはしたいけど、メモリ管理はGCに任せたい。Scala3 のアンサーが Capture Checking + Separation Ch

これを組み合わせてる例を雑にググっても見つけられなかったのですが、よく考えたら組み合わせたらそれなりに便利というか、劣化版HaskellのCoercibleと言えなくもないのでは???と今更気がついたので、それについて書きます。 昔こういうことをtweetして dottyのopaque type、Scala 2のvalue classに比べてよりHaskellのnewtypeに近い気がしてるけれど、Haskellのtype roleやCoercibleのようなものを入れたい、みたいな動き出てこないのかなぁ。 リポジトリ検索しても少し言及されてるだけだな— Kenji Yoshida (@xuwei_k) February 16, 2020 今でもおそらくScala 3本体で追加でそういう系の機能が直接入ったりはしてないはずです。 https://docs.scala-lang.org/sc
そして以下の仕様をご確認ください。 Business Rule: “A contact must have anemail or a postal address” 出典と動機、課題 上掲コード及び仕様はDesigning with types: Making illegal states unrepresentable | F# for fun and profitより引用しています。はっきりいって本記事はこの“Designing with types”シリーズのさわり紹介みたいなもんです。原典を読めでもいいのですが、以下の動機により自分でも言語化してみることにしました。(ただ、**原典は読め。**超良いです。)Elmなどの関数型言語を推している勢として、代数的データ型、特に直和型という存在に戸惑う初学者がどうも多そうに見える。ので、解説を試みたい それらの言語では、(特に静的型付け

この記事は、「KNOWLEDGE WORKBlog Sprint」第1日目の記事になります。 mayah です。株式会社ナレッジワークでは創業時より CTO をしています。開発ではプロダクト全体のアーキテクトをやっていることが多いです。普段からメンバーたちが書く Design Document やコードのレビューをする機会も多く、コードレビューだけでも月 200〜300 PR ぐらいは見ています。 さて、美しく堅牢なコードを書く上で、一握りのソフトウェアエンジニアは自然に習慣としていることで、多数のソフトウェアエンジニアは全く考えていない(もしかしたら一度も考えたことすらない)ように見えていることが1つあり、本日はその話をしたいと思います。 それは、操作よりも状態・性質に注目してコードを書くという習慣です。 ここでいう操作とは、インプットからアウトプットを計算したり、なんらかのオブジェク

存在した関数型まつり 2025.fp-matsuri.org 関数型まつりで、『ラムダ計算と抽象機械と非同期ランタイム』という題で発表してきました (Google slide)。 hsjoihs 氏を始めとする複数人の協力もあって(というか全面的にみなさまの協力のおかげです、本当にありがとうございました 1)全体的な構成は非常に良いバランスに仕上がり、発表も良い感じにできたのではないかと思います。資料の作り始め、友人に内容について相談したら「これ全部しっかり話すと学部の8単位ぶんくらいの積み上げがありそうだけどいける?」と言われていて、実際その見積もりは概ね正しそうだと今でも思っているわけですが、そんな内容を(事前に数十時間を構成のプランニングに注ぎ込んでいるとは言え)発表練習無しで45分で話し終えたというのは、我ながらよくやったものです。去年のScalaMatsuri で 40 分枠で

class: center, middle # より安全で単純な関数定義 関数型まつり 2025 2025/06/14<br> @gakuzzzz --- class: left,top ## 自己紹介 * 中村 学/Manabu NAKAMURA *Twitter: [@gakuzzzz](https://twitter.com/gakuzzzz) *Tech to Value Co.,Ltd.CEO * [Alp, Inc.](https://thealp.co.jp/)Tech Lead --- class: center, middle ## 前置き --- class: center, middle ## このセッションでは ##<strong>モナド</strong>の話はしません! ## 安心して聞いて下さい --- class: left,top ## はじめに
関数型言語を採用し、維持し、継続する By 松澤 有 (ymtszw) (Siiibo証券株式会社 CTO) @関数型まつり2025 (2025/06/14) [1] Siiibo証券株式会社 2019年創業、筆者はfounding engineer / CTO ↓の構成で社債専門の証券システムを作り上げてきた このセッションでは 実際に関数型言語を業務で採用し、維持し、継続するにあたって重視している価値観、手続き、手法などをざっくばらんに紹介します なんとか5年はやってこれた 次の5年もやっていきたいがためのやつ 前提 最新の開発組織規模 フルタイム - 5名(筆者含む) 週3日程度 - 2名 週2〜10時間程度 - 8名 学生アルバイト - 3名 1日あたりの平均デプロイ(master push,GitHub Flowなので)回数 Copilotにお願いして雑に集計したら4.94だっ

Competitiveprogramming with Haskell Functional Festival 2025 in TOKYO

はじめて関数型言語の機能に触れるエンジニア向けの学び方/教え方 / how-to-learn-or-teach-for-fp-beginner

lily,Aikatsu,Programming language, and more

先日より開催されていたKotlinConfで、新しいエラーハンドリング「RichErrors」についての言及がありました。従来のように例外を使用するのではなく、エラーを値として扱えるようにする新機能です。聴き逃しているだけかもしれませんが、まだリリース予定などは立っておらず、機能を設計中の段階なのではないかと思われます。 私はもともとKotlinのエラーハンドリングはなかなか悩ましいなと思っていた節があり、ずいぶん前からKEEP上での議論を追うなどしてキャッチアップしていました。最近同僚ともエラーハンドリングに関する決め事をあれこれするために議論しており、私自身はエラーハンドリングに対する関心が高いです。 私の所感としては、Kotlinの言語設計によく合ったエラーハンドリングの方式が採用されそうで非常に楽しみにしています。最近の議論ではともすればモナドであるとか、Result<T, E>
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く