This presentation includes these following three things: 1. Monad 2. Monad Transformers 3. Extensible-Effects Main topics are how to use atnos-eff and comparison between mtl and eff.
Tagless-final is a technique originally used to embed domain-specific languages into a host language, without the use of Generalized Algebraic Data Types. In the Haskell community, tagless-final still refers to a way of creating polymorphic programs in a custom DSL that are interpreted by instantiating them to a concrete data type. In the Scala community, however, tagless-final is used almost excl
Scalaのオブジェクト同士を比較する際に、==を使って比較することは出来るが、同値かそうでないかしかわからない。 そこで、具体的に何がどう変わったのかをジェネリックに取得するライブラリを作ってみた。 こんな雰囲気で使える。 $ amm Loading... Welcome to the Ammonite Repl 1.6.7 (Scala 2.12.8 Java 1.8.0_192) If you like Ammonite, please support our development at www.patreon.com/lihaoyi @ import $ivy.`net.petitviolet::generic-diff:0.6.0-RC2`; import net.petitviolet.generic.diff._ import $ivy.$ ; import net.pet
Beautiful, Simple, Testable Functional Effects for Scala See my accompanying talk, The Death of Finally Tagless, which was released today and covers ZIO Environment. Today’s functional effect systems for Scala, such as the ZIO library that I work on, are incredibly powerful. They provide an effect data type that unifies synchronous, asynchronous, concurrent, and resource effects, and support autom
Red HatでOpenShiftのサポートをしているid:nekopです。3年前くらいまでJBoss Middlewareを主に担当していたので久しぶりなサーバサイドJavaネタとなるのですが、QuarkusというKubernetesネイティブJavaアプリケーションフレームワークをリリースしました。 quarkus.io 読み方は「くぉーかす」です。キャッチコピーがSupersonic Subatomic Javaとなっているように、高速軽量コンパクトなランタイムがウリです。また、コンテナ化やクラスのHot reloading対応などの開発容易性も備えています。 現在ではJava EEのアプリケーションサーバ上へのパッケージ化されたアプリケーションのデプロイ、Spring Bootなどに代表されるfat jarを利用したよりモダンなデプロイの2つのデプロイ形態が広く利用されていますが、
Edited 2019–02–07 19:00 UTC— added note to the *> section. Functional programming in Scala, due to various syntactic and semantic idiosyncrasies of the language, can be more difficult to get into than it otherwise should. Specifically, there are some features of, and “proper ways to do stuff”, within the core FP libraries that are obvious once you know of them — yet are not so trivial to discover
ForewordI often find myself, both professionaly and otherwise, having to explain bits of Scala to newcomers to the language (but usually not new to programming). Something that’s becoming increasingly obvious is that Scala developers follow a certain set of unspoken rules without really thinking about them, and never really explain them to beginners. This is not helping Scala’s reputation as a har
Scala Advent Calendar 2018 - 24日目の記事です。 ついに12月でアドカレ始まったかーと思ってたらもうクリスマスイブで自分の番ですよ。早いですね。 今年のブログ更新もどうせこれが最初で最後でしょう。また来年頑張ります... さて、今回は一ヶ月ほど前に master に入り、v1.5.0-RC1 から使えるようになった cats.data.ContT について少し試した感想を。 github.com ちなみに、継続モナドについては丁度7日に @kazzna さんがContの合成がしたいというタイトルで 公開されていたので、そちらもどうぞ。ContT はそんな継続モナドのモナドトランスフォーマー版です。 ついに Cats にも ContT が Scala においても継続モナドは実用的なツールの一つです。 自分の観測範囲では例えば、 ActionCont で有名な p
この記事は RECRUIT MARKETING PARTNERS Advent Calendar 2018 の投稿記事です。 こんにちは。スタディサプリENGLSHでサーバーサイドとインフラを担当している松川です。 CleanArchitectureにEffを組み込むことによって、これまでモナドトランスフォーマーでは辛かった数種類以上のモナドを取り扱う処理をフラットに書けるようになったり、多くのメリットがあったので紹介させていだきます。 はじめに スタディサプリ ENGLISHのサーバーサイドは全てScalaで書かれており、CleanArchitectureを採用しています。 1つのサービスにおけるsbtプロジェクトの依存関係は以下のようになっています1)StreamAdapter,InternalAdapterは存在しないサービスもあります。。 基本的にはオブジェクトが主役な設計ですが、
はじめに Scala (v2.12) のコレクションのクラス構造が謎だなとはわりと思っていて(Xxx と XxxLike と GenXxx ってなに〜)、The Architecture of Scala Collections あたりを読んでまとめようと思っていました。 しかし、v2.13 でコレクションに入る(正確に言うと、 2.13.0-M4 で入った)変更をドキュメントやソース読みつつ調べていたら、ほんとうに大きな変更だなあ、なんだかここでまとめてももったいないなあ、という気持ちになってきたので 2.13 のコレクションについてざっくり調べてみることにしたのでした。 この記事では、scala-lang.org にある、コレクションライブラリの設計概念について書かれているドキュメントをざっくり訳しつつ 2.13 でのコレクションの設計などについて理解を深めようと思います。 TL; D
Scalaプログラマの観点からGraalVMを紹介、使ってみる。 GraalVM? GraalVMは、思い切り雑に紹介するとScala(Java)プログラムを高速化することが出来る(ことがある)らしい。 このあたりを読むともう少し詳しく書いてある。 https://www.graalvm.org/docs/why-graal/#for-java-programs 簡単にまとめておくと、特徴としては Javaを高速化 JITコンパイルになにかしら改良がしてあるとのこと。 Javaコンテキスト内で別の言語(JSやPython)を実行 Ployglotなアプリケーションを開発可能 Nativeイメージを作成 JITではなくAOTコンパイル の3点が挙げられている。 この記事では1と3に触れてみる。 2についてはEmbed Languages with the Graal Polyglot API
Fringeのエンジニアの藤野です。 11/10(土)、11/11(日)で開催されたScala関西サミットに弊社のエンジニア3人が発表してきました! Scala関西サミット Scala関西サミットは今年から初の2日開催で、1日目が技術セッションで、2日目がアンカファレンスでした。 2018.scala-kansai.org 弊社は去年に引き続き、Fringe81株式会社としてSilverスポンサーでした。 セッション セッションは天満研修センターで行われました。 発表ブースは4つで、合計26セッションありました。 セッション内容は初心者向けから中/上級者向けまでバラエティに飛んだものでした。 個人的な感想ですが、関数型に特化したセッションが比較的少なかった印象です。 一方Akkaの話題はやはり人気で、AkkaのコミッターのKonradさんをはじめとして5セッションはAkkaに関するセッショ
去年に引き続いて幸運にもCFPに応募したトークが採択されたので発表してきました。 運営の皆さまをはじめとして、ありがとうございました! 資料 サンプルコードはGithubに上げました。 発表の振り返り セッションのトリで裏番組が非常に豪華だったにも関わらず聴きに来てくださった方には感謝しかないです。 本当にありがとうございました! しかし40分の発表枠で丁寧に話しすぎて30ページくらい話せなかったという辛い結果に...。 余談ですが発表資料は公開している分だけで130ページ超あるものの、実は時間の都合でスキップしたのも入れると150ページを優に超える資料を作ってしまってました。 去年のを見返すと170ページを40分弱で消化したらしいのでゆっくり話せるようにはなったらしい。成長したのか退化したのか...。 雰囲気 初日の朝ごはん お昼ご飯の串カツ 筆者近影 集合写真。いい位置に付けてみた 感
blogに書くまでが勉強会らしいので書きます 参加したセッションと感想 どっちも聴きたいというのが結構あったけど、迷ったときは後述する動機に基づいて選択しました。 長期的なメンテナンスの必要なScala製システムにおいて気をつけるべきこと Scalaに限らず直面する問題。 個人的に印象的だったのは 技術選定は慎重にする Javaで書いても複雑にならないようなものはJavaで書いてしまう 可能な限りライブラリに依存しなくて良いようにする Scalaは言語として、変化を恐れないという部分があるため、その哲学を受け入れましょう 前者3つはトレードオフの話。盲目的にならず「何故その選択をするのか」を明確にするということ。 最後の1つは心構えみたいな話ですけど、「変化を恐れない」というマインドと余裕を、自分でもチームでも持ち続けたいなと、改めて思った。 明日から使える実践エラーハンドリング アプリケ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く