会社でScalaを使っているので、できれば自分もモナモナしていきたいという気持ちがある。最近見つけた参考になりそうな記事を集めてみる。 Readerモナド Readerモナドと関数表現の比較、そして最後にFreeモナドに至る。 qiita.com Freeモナド medium.com softwaremill.com dzone.com izumisy.work Interpreterパターン 厳密にはFreeモナドとは関係ないかもしれないが www.youtube.com 1ファイルでつくるFreeモナドのサンプル Scalazとかcatsとか使わずにモナドを手作りしていてイイ Simple Scala example of a pure functional program that does I/O · GitHub Closeモナド mentalpoker.blogspot.com
はじめに はじめまして!昨年10月に中途入社したエンジニアのおかむです。 エンジニアとしてはそれなりに長くやってきて、インフラからフロントエンドまで幅広く経験しています。 苗字が社長の岡村さん(2021年7月からは会長になります)と同じで紛らわしいため、Adwaysでは愛称で呼んでもらってます。 (実は年齢も岡村さんと同じです) 自己紹介は短く切り上げて本題に入りましょう。 以下、Scalaのサンプルコードではmdocを使っています。 はじめに ZIOとは何か 簡単なコード Map FlatMap and other combinators バリデーション エラー時のStacktrace 最後に ZIOとは何か https://zio.dev ZIOは、Scalaで作用を扱う関数型プログラミングのライブラリです。 「作用」というのはちょっとわかりづらいので、多少の語弊は恐れず「処理」と言い
この記事は RECRUIT MARKETING PARTNERS Advent Calendar 2018 の投稿記事です。 こんにちは。スタディサプリENGLSHでサーバーサイドとインフラを担当している松川です。 CleanArchitectureにEffを組み込むことによって、これまでモナドトランスフォーマーでは辛かった数種類以上のモナドを取り扱う処理をフラットに書けるようになったり、多くのメリットがあったので紹介させていだきます。 はじめに スタディサプリ ENGLISHのサーバーサイドは全てScalaで書かれており、CleanArchitectureを採用しています。 1つのサービスにおけるsbtプロジェクトの依存関係は以下のようになっています1)StreamAdapter,InternalAdapterは存在しないサービスもあります。。 基本的にはオブジェクトが主役な設計ですが、
class: center, middle # 明日から使える<br/><strong>実践</strong><br/>エラーハンドリング Scala関西Summit 2018 11/10 --- class: left, middle ## 自己紹介 * 中村 学(Nakamura Manabu) * [@gakuzzzz](https://twitter.com/gakuzzzz) * Tech to Value 代表取締役 * Opt Technologies 技術顧問 <img src="../images/opt_logo_1.jpg" alt="Opt Technologies" width="450" style="margin-left: 0px" /> * F-CODE CTO <img src="../images/f-code_logo.png" alt="f-cod
class: center, middle # <strong>Dependent method types</strong><br/>を利用した<br/>軽量<span style="color: blue;">Clean Architecture</span><br/>の紹介 Scala関西Summit 2019 10/26 --- class: left, middle ## 自己紹介 * 中村 学(Nakamura Manabu) * [@gakuzzzz](https://twitter.com/gakuzzzz) * Tech to Value 代表取締役 * Opt Technologies 技術顧問 <img src="../images/opt_logo_1.jpg" alt="Opt Technologies" width="450" style="margin-lef
The exciting new version of Scala 3 brings many improvements and new features. Here we provide you with a quick overview of the most important changes. If you want to dig deeper, there are a few references at your disposal: The Scala 3 Book targets developers new to the Scala language. The Syntax Summary provides you with a formal description of the new syntax. The Language Reference gives a detai
Cats 入門2(高カインド型) Cats と、 Cats の解説 PDF 「Advanced Scala with Cats」の紹介その2です。 その 1 は こちら です。 今回は 高カインド型の型クラスを中心に紹介していきます。 Functor, Applicative, Monad, Foldable など覚えておくととても役に立つものばかりです。 高カインド型(Higher Kind Type)とは 高カインド型の説明の前に次のコードを見てみます。 val stringList:List[String] = List("A") var intList:List[Int] = List(1) 上記の stringList と intList は List[A] の A の部分にそれぞれに String と Int という型を与えて、 List[A] から List[String]
class: center, middle # Implicit 入門 Scala Matsuri 2018 03/16 --- class: left, middle ## 自己紹介 * 中村 学(Nakamura Manabu) * [@gakuzzzz](https://twitter.com/gakuzzzz) * Tech to Value 代表取締役 * Opt Technologies 技術顧問 <img src="../images/opt_logo_1.jpg" alt="Opt Technologies" width="450" style="margin-left: 0px" /> * f-code CTO <img src="../images/f-code_logo.png" alt="f-code" height="120" style="margin-left
purely_functional_play_framework_applicationAI-enhanced description This document describes a presentation on using the Tagless Final style in the Play Framework for purely functional programming. The presentation introduces Play Framework and how it uses Google Guice for dependency injection. It discusses separating the program from its execution using techniques like the Reader Monad and Free Mo
index.md MonadTransformer とは何か 注意書き この記事は Monad がわかる人に向けた MonadTransformer の解説記事です。 すごいH本や FP in Scala などでモナドまではイメージが掴めたけれど、モナドトランスフォーマーが何かわからない、という層をターゲットに想定しています。 基本的に Functor, Applicative, Monad および型クラスについては把握しているものとしますので、この辺があやふやな方は別の資料などをご参照下さい。 サンプルコードとして Scala を利用します。ただし、説明の都合上、高階型引数について kind-projector の ? を用いた表記を使います。 例えば List[A] 型のモナドインスタンスは通常 Monad[List] 型として表しますが、この資料では Monad[List[?]] と
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く