タグ

scalaに関するemonkakのブックマーク (193)

  • ScalaのWebフレームワーク事情 2015年版 - たけぞう瀕死ブログ

    ScalaのWebフレームワークについて、昨年某所で書いた記事をアップデートしてみました。マイクロサービスが流行ってきたり、Playは2.4になっていろいろ変わったり、ScalaのライブラリやフレームワークもFutureやモナドを活用したものが増えてきたり等々、この一年でScala界隈のWeb開発事情もいろいろと変化してきています。 Play2 出たばかりの頃はPlay 1.x系でできたことができなかったり、バグだらけだったりでコミュニティでも暴動が起きそうになったものですが、喉元すぎればなんとやら、いまでも使いにくい部分も多いのですが、Typesafe社のお墨付きということもあり、なんだかんだでデファクトスタンダードの位置を確立しているのではないかと思います。 ユーザ数が多いだけあり、プラグインや周辺ライブラリ、Web上での情報等も豊富です。 ただ、Play 2.4でGuiceを使ったD

    ScalaのWebフレームワーク事情 2015年版 - たけぞう瀕死ブログ
  • 竹添さんが紹介してないScalaのWebフレームワークも含めて2015年現在の状況を色々紹介 - xuwei-k's blog

    ScalaのWebフレームワーク事情 2015年版 - たけぞう瀕死ブログ Scala界隈のWebフレームワークやJsonライブラリは良くも悪くも混沌を極めている(?)わけですが、それにしても竹添さんが紹介してるやつだけでは個人的に不公平感というか、混沌としている感が全然伝わらないと思ったので、全部に詳しい訳ではいですが、自分なりに現状を書きたくなったので紹介しようと思います。 どうせ全部を当に知り尽くしている人なんでいないので、これはこれで不公平というか偏った見方にもなってるかもしれませんが、そんなこと言ってたらこういう記事をいつまで経っても書けないので、思い切って書くことにしました。 いつもの注意書きですが、あくまでこれ書いてる2015年10月現在の状況であり、1年程度経過しただけで状況は劇的に変化する可能性あるので、ご了承ください。 そもそも、あまりこういうの書きたくないのは、わり

    竹添さんが紹介してないScalaのWebフレームワークも含めて2015年現在の状況を色々紹介 - xuwei-k's blog
  • Typeclassopediaに足りない型クラス - xuwei-k's blog

    挙げようと思えばいくらでも挙げられるとは思うけれど、とりあえず自分が思ったものをいくつか挙げておきます。 Typeclassopediaという型クラスを色々紹介した有名な素晴らしいやつがあるのですが、それ少し古いし、もうちょっと紹介してもいいような型クラスが触れられてないぞ?というのを前から思っていたので、それを簡単に書いてみるという話。 https://wiki.haskell.org/Typeclassopedia http://snak.tdiary.net/20091020.html 今回挙げてないのが重要でない、これ以外知らない、というわけではなく、あくまでもなんとなくな基準です。 (好評だったら、続編を書く? or 他の人が書いてくれてもいい?) 以前こんなtweetしたけど、まぁやってくれそうな人いないし、言い出しっぺの法則ということで。 「typeclassopediaに載

    Typeclassopediaに足りない型クラス - xuwei-k's blog
  • slick-doc-ja 3.0 — Combined Pages

    slick-doc-ja 3.0 Slick 3.0 documentationの日語訳です。 編集先: GitHub - krrrr38/slick-doc-ja 連絡先: @krrrr38 他のバージョンのドキュメント Slick 1.0 翻訳 Slick 2.0 翻訳 Slick 3.0 翻訳 API Documentation (scaladoc) Slick Core (slick) TestKit (slick-testkit) Code Generator (slick-codegen) Direct Embedding (slick-direct) (Deprecated) Slick Extensions (slick-extensions) Slick 3.0.0 documentation - 01 Introduction Permalink to Introdu

  • https://downloads.typesafe.com/website/casestudies/images/typesafe-community-story-dwango.pdf

  • FreeモナドとTagless FinalによるDependency InjectionのためのDSL - Qiita

    前回の記事では、ReaderモナドやFreeモナドを使ってDependency Injectionを行うための小さなDSLを組み立てた。今回の記事では、まず前回組み立てたDSLの課題であるExpression Problemと、それを解決するための機能Injectと、さらにはTagless Finalを用いたDSLについて述べる。 この記事は前回の記事の知識を前提としているので、分からない言葉などがある場合はまず前回の記事を参照して欲しい。また、文章について不明なことや意図が分かりにくい部分があれば気軽に指摘して欲しい。 注意: 記事の中にあるコードは読みやすさのためにimportなどを省略しているので、このままでは動かない。動かしたい方はGithubのリポジトリを使うとよい。 Expression Problem Expression Problemとは、こちらのサイトを引用すると次のよ

    FreeモナドとTagless FinalによるDependency InjectionのためのDSL - Qiita
  • Dependency InjectionとDSL

    Dead-Simple Dependency Injection in Scalaという発表で、Dependency Injection(依存の注入)をReaderモナドなどを用いて行うという技術があった。下記がその発表である。 この記事ではまず、Dependency Injectionについての説明と、Readerモナドについての説明を行い、次にReaderモナドを使ったDependency Injectionについて述べて、Freeモナドを用いて小さなDSLを作るアプローチを紹介する。 この記事はモナドやDependency Injectionなどに関する前提知識がなくてもある程度読めるように意図しているが、Scalaの文法的な知識を前提としている。また、もし説明が不足している点や文章の意図が分かりにくい部分があれば、気軽にコメントなどで指摘して欲しい。 注意: 記事の中にあるコードは

    Dependency InjectionとDSL
  • 【Scala】foldとfoldLeftの違いを知る | DevelopersIO

    はじめに こんばんは! 突然ですが、 Scala における fold と foldLeft はほとんど同じものだ!と思っていませんか? また、Scala の Option#fold メソッドを使って、何か不自然に思ったことはありませんか? 先に結論を述べますと、 fold メソッドと foldLeft メソッドは異なります(もちろん foldRight とも違いますよ!)。 「ちょっとだけ挙動に差が…」的な違いではなく、根的に違います。 たまたま、 List#fold と List#foldLeft が(例外的に)似たような定義で、かつ(例外的に)似たような挙動をするため、誤った通説(全てのfold≒foldLeft)があったりなかったりするようです。少なくとも僕は、Scala を書くようになってからある一定の期間、全ての fold と foldLeft は同じものだと考えていました。

    【Scala】foldとfoldLeftの違いを知る | DevelopersIO
  • GitHub - mdedetrich/soda-time: Scala/Scala.js port of JodaTime to Scala/Scala.js

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - mdedetrich/soda-time: Scala/Scala.js port of JodaTime to Scala/Scala.js
  • 関数型SCALA型 クラス編 - halcat0x15a

  • Sbt職人のススメ

    Aug 1, 201536 likes9,207 viewsAI-enhanced description The document provides an overview of using sbt (Scala Build Tool) including: - Installing sbt and creating a basic project structure - Common sbt commands like compile, run, and test - Defining settings and tasks in build.sbt - Referencing settings from tasks and getting task results - Using scopes to define values for specific projects or conf

    Sbt職人のススメ
  • sbtにおけるKeyとは何か? 〜 有向非巡回グラフ(Directed Acyclic Graph)とsbt - xuwei-k's blog

    sbtを使ったことがある人なら、たいていSettingKeyやTaskKeyという言葉を聞いたことがあるはずです。もし聞いたことがなくても、1度でもsbtを使ったことがあるなら、すでに知らないうちにそれらに触れているはずでしょう。 それらSettingKeyやTaskKeyを含んだsbtの内部DSLについては、その独特さゆえに、好みが分かれることが多いと思います。 そもそも なぜSettingKeyやTaskKeyという概念が必要なのか? それらは一体何なのか? ということに関して、少し別の視点から考察や解説をしてみることによって、sbt自体の理解の手助けとなることを目的として、このエントリを書いてみます。 なんだか、少しばかり堅苦しい始まり(?)にしてみましたが、つまり 「sbtのKeyは有向非巡回グラフにおけるNodeであり、build.sbtは有向非巡回グラフを組み立てるDSLである

    sbtにおけるKeyとは何か? 〜 有向非巡回グラフ(Directed Acyclic Graph)とsbt - xuwei-k's blog
  • Scalaのimplicit - tkawachi Blog

    Scala の implicit のお勉強メモ。 なぜ implicit を使いたくなるか? コード片を見ただけではわからなくなるので、暗黙的な記述はあまり使わない方がいいんじゃないかと個人的に思うのだけど。 それでも便利な使い道があるから使われているみたい。 今自分が知っているところで次のパターンがあるみたい。 他の便利な使い方もきっとあるんじゃなかろうか。 既存のクラスを変更せずにメソッドを追加したいとき (pimp my library pattern)。 implicit な関数, implicit なクラスを使う。 型パラメータ情報を実行時に使いたいとき。implicit パラメータをつかう。 共通のインタフェースを持たないクラス群に、共通のインタフェースをあとづけするとき (CONCEPT pattern)。implicit パラメータをつかう。 pimp my library

  • bullet-scala: N+1クエリ問題を回避する - 貳佰伍拾陸夜日記

    Scala関西 Summit 2015での発表で触れていたN+1クエリ問題をなんとかするためのライブラリを公開した. 発表は以下のもので, ここでは「関係モナド」という名前で紹介していたけれど, これは口頭でも説明したように便宜上てきとーにつけた名前であって, とくにそういう名前のよく知られたモナドがあるというわけでもなければ, そもそもモナドであるかどうかはあまり質的ではない. この発表のあとに, Rails (Active Record)でのbulletのようにN+1問題の検出をScalaでやる方法はないだろうか, と言っている人がいたので, そういうものを探していて辿りつけるとよかろうということで, bullet-scalaという名前にした. もちろんN+1問題の検出のためのライブラリというわけではないし, 動的に検出するのではなく原理的に問題が発生しないようにするものなので, 思

    bullet-scala: N+1クエリ問題を回避する - 貳佰伍拾陸夜日記
  • Free-ScalikeJDBC から見る合成可能なDSLの作り方

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    Free-ScalikeJDBC から見る合成可能なDSLの作り方
  • 関数型Scalaという勉強会でproperty based testingについて話をした - xuwei-k's blog

    Scalaの勉強会で半分くらいHaskellの話してすいませんでした。 http://xuwei-k.github.io/slides/scalaprops/ http://connpass.com/event/16052/ http://togetter.com/li/852254 資料はりきって頑張り過ぎたらとても長くなりました(150ページ超えた) 今までで一番頑張ったかもしれません。ここ半年くらいの成果を全部詰め込んだ感じです。 あとで資料として読んで理解してもらうこと前提で色々詰め込んだので、1年後でも2年後でも、興味のある人が見て有用な資料になればいいですね・・・。 ところで、スライド作るのに、今回から remark というやつ使いました https://github.com/gnab/remark markdownで書けて コードのシンタックスハイライト効いて ページ数表示と

    関数型Scalaという勉強会でproperty based testingについて話をした - xuwei-k's blog
  • Scalaで型レベル”だけ”でクイックソート | POSTD

    Scalaの型システムが先進的であることは、皆さんもご存じのことかと思います。この投稿では、Scalaの型システムのみを使った クイックソート アルゴリズムの実装方法をご紹介したいと思います。なお、ここで紹介するデモの完全なコードは こちら をご覧ください。 自然数 まずは準備から。ソートアルゴリズムを実装するには、ソートする対象が必要ですよね。ここでは自然数を用います。もちろん、Scalaの型システムには利用可能な自然数はありません。そんなわけで、全ての自然数の型を作る必要があります。 型を無限に作るというのは、恐らく時間の浪費になるでしょうから、ここはもう少し賢い手を考えます。そう、数学を使いましょう。 ペアノの公理 ペアノの公理とは、自然数を形式的に定義するためのシンプルな方法のことです。 0 は特別なものとする。 0 は自然数である。 全ての自然数 n には、それに続くもう1つ別の

    Scalaで型レベル”だけ”でクイックソート | POSTD
  • Play 2.4が依存性注入を採用,Java 8に移行

    TypesafeのPlayチームがWebフレームワーク“Damiya”のバージョン2.4をリリースした。前回のメジャーリリースPlay 2.3からは,およそ1年ぶりになる。今回のリリースは,PlayのコントリビュータであったKate von Roeder氏を追悼して,Damiyaと命名されている。 2.3から依存性注入(DI)を採用して開始されたリファクタリングによるモジュール性の向上は,今回のリリースでも継続されている。その方針によって,Anormデータアクセス層やEbeanといったモジュールが別プロジェクトとして切り出された。また今回のPlayではJava 8が必須となり,ラムダやデフォルトメソッドがJava-APIで使用されている。 依存性注入はこれまでのバージョンでもサポートされていたが,今回からは初期状態で使用可能になるとともに,利用が推奨されるようになった – グローバルステー

    Play 2.4が依存性注入を採用,Java 8に移行
  • 猫番 — 猫番

    番 Cats は Scala のための関数型プログラミングのライブラリで、これは僕がそれを使ってみた記録だ。 大まかな流れは、僕が 2012年 (!) に書いた独習 Scalaz に倣う。 Cats のサイト によると、名前は圏 (category) の遊び心のある短縮形に由来する。 プログラマの取りまとめはの群をまとめるようなものだと言われる。 訳注: 稿原題の herding cats は、英語の慣用句の一つで、herd というのは何十匹もの牛や羊を追い立てて群で移動させること。 は集団行動ができないので、言うことを聞かずにてんでんばらばらな状態、またはそれをまとめようとする様。 少なくとも Scala を使ってるプログラマに関しては当てはまるのではないかと思う。 この状況を十分承知した上で、Cats は第一の動機として「とっつき易さ」をあげている。 Cats は技術的な視点か

  • 継続モナドを使ってWebアプリケーションのコントローラーを自由自在に組み立てる - Qiita

    case class Cont[R, A](run: (A => R) => R) { def map[B](f: A => B): Cont[R, B] = Cont(k => run(a => k(f(a)))) def flatMap[B](f: A => Cont[R, B]): Cont[R, B] = Cont(k => run(a => f(a).run(k))) } ここで重要なのは Cont のコンストラクターに渡される run 関数です。 この run 関数を作り Cont のコンストラクターに渡すことで、継続モナドを作ることができます。 それで run 関数の型を見てみますと (A => R) => R とあります。 A => R という型の関数を受け取り、おそらく受け取った関数を実行し R という結果を返すという動作が期待できます。 ここで A を全体の中の途中の計

    継続モナドを使ってWebアプリケーションのコントローラーを自由自在に組み立てる - Qiita