Scalaの関数型プログラミングの中で、オブジェクトがどのような位置づけで使用されるかの説明した資料です。object, class, traitがMLのモジュールシステムとどのように対応するかを中心に解説しています。

ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog どうも、ヤフーの佐野( @taketo1024 )です。先日引っ越しをしまして、張り切って自分でタンスを運んだりして今とても筋肉痛です。 皆さんは Objective-C から Swift への移行は進んでいますか?弊社ではまだ Obj-C で書かれているプロジェクトは多くあります。世に出ている iOS アプリも多くはまだ Obj-C で作られているんじゃないかと思います。 Swift もオープンソース化され、この先その進化のスピードはさらに増してくるはずです。そこでチーム内で開発を進めていた Obj-C → Swift コンバータ を大幅に改良しオープンソースで公開することにしました!この記事ではその導入と活用の方法を説明します
(注:2016/1/21、頂いたフィードバックをもとに記事を修正いたしました。) 『 Programming in Scala (Scalaでプログラミング) 』の初版を読み始めた(でも読み終えていない)5年前からJavaの代わりにScalaを使うようになりました。最初はテストの時に使用していましたが、すぐにちょっとしたユーティリティクラスでも使用するようになり、気付いたらプロジェクト全てで使用するようになっていました。 Scalaに対する不満は多く存在しますが、この記事は違います。これは非難するものではなく、むしろ称賛するものです。 Scalaに興味ある開発者や聞いたことがあっても詳しく見たことがない人、「スムーズなプログラミングの妨げになる」と思い使用を先送りしていた人のために書きました。もちろんScalaファンに読んでもらうのも、他の人にも紹介してもらうのも大歓迎です。 この記事は3
DIを使わない状態ではUserRepositoryというインターフェースが定義されているのにもかかわらず、UserServiceはUserRepositoryImplの参照も持っていました。 これではせっかくインターフェースを分離した意味がありません。 UserServiceがUserRepositoryインターフェースだけを参照(依存)するようにすれば、具体的な実装であるUserRepositoryImplの変更に影響されることはありません。 この問題を解決するのがDIの目的です。 それではDIのインジェクタを加えて、上記のクラス図を修正しましょう。 謎のインジェクタの登場によりUserServiceからUserRepositoryImplへの参照がなくなりました。 おそらくインジェクタは何らかの手段でサービスであるUserRepositoryImpl(Dependency)をクライアン
こんにちは、アプリケーションエンジニアの id:pokutuna です。 「はてな教科書」は、はてなで Web 開発に携わるエンジニアのために作られた1週間で Web アプリケーション開発の基本を身につけるための教科書です。はてなサマーインターンシップや、入社時研修に利用されています。2012年から GitHub 上で公開しており、どなたでも読むことができます。 はてなでは継続的に教科書を更新していますが、特に毎年のインターンの講義内容をフィードバックしています。今回の更新では、新しくはじまったScalaとSwiftのコースで利用した教科書を追加しました。アプリケーションの学習や研修題材としてどうぞご利用ください。 Scala の教科書を追加しました 今年のインターンでは Mackerel の開発に取り組む 「クラウドサーバ管理システムコース」コースが開催されました。去年までのインターンで
The ones I can think of are Existential types def foo(l: List[Option[_]]) = ... Higher kinded type parameters case class A[K[_],T](a: K[T]) Ignored variables val _ = 5 Ignored parameters List(1, 2, 3) foreach { _ => println("Hi") } Ignored names of self types trait MySeq { _: Seq[_] => } Wildcard patterns Some(5) match { case Some(_) => println("Yes") } Wildcard patterns in interpolations "abc" ma
Programming in Scala, First Edition by Martin Odersky, Lex Spoon, and Bill Venners December 10, 2008 Foreword Martin Odersky made a huge impact on the Java world with his design of the Pizza language. Although Pizza itself never became popular, it demonstrated that object-oriented and functional language features, when combined with skill and taste, form a natural and powerful combination. Pizza's
はじめに 今日あった増田さんのDDD Allianceの3週連続DDDの話を聞いてきた所、最後の質疑応答で、 「ScalaやHaskellなんかの関数型的な考え方が適応できるんじゃないか?」 という質問が聴講者の方から上がったのですが、 増田さん的には「まだ挑戦的試みの域を出ない」という回答があったので、 ScalaでDDDを2年近くやってきた者として、これは役立つよねという手法を紹介しようと思います。 正直な話、DDDも関数型プログラミングも学ぶのに根気のいる難しい概念にもかかわらず、 バズワード化していろんな人が違う意味で使うようになってしまったので、 正直最近こういう話を書きたいと思わなくなってしまったし、 イスラムのムジャーヒディーンと十字軍の両軍の前で正義の定義について演説することに 近いものがあると思うので、気は進まないながらも、役立つものを紹介しようと思います。 まず最初に前
This article presents a list of simplifications and optimizations of typical Scala Collections API usages. Some of the tips rest upon subtle implementation details, though most of the recipes are just common sense transformations that, in practice, are often overlooked. The list is inspired by my efforts to devise practical Scala Collections inspections for the IntelliJ Scala plugin. We’re now in
Scala関西 Summit 2015での発表で触れていたN+1クエリ問題をなんとかするためのライブラリを公開した. 発表は以下のもので, ここでは「関係モナド」という名前で紹介していたけれど, これは口頭でも説明したように便宜上てきとーにつけた名前であって, とくにそういう名前のよく知られたモナドがあるというわけでもなければ, そもそもモナドであるかどうかはあまり本質的ではない. この発表のあとに, Rails (Active Record)でのbulletのようにN+1問題の検出をScalaでやる方法はないだろうか, と言っている人がいたので, そういうものを探していて辿りつけるとよかろうということで, bullet-scalaという名前にした. もちろんN+1問題の検出のためのライブラリというわけではないし, 動的に検出するのではなく原理的に問題が発生しないようにするものなので, 思
はじめに 人によって様々な書き方ができてしまうのがScala。 本記事では、階乗を求めるfac関数を例に、いくつかの興味深いプログラミングスタイルを紹介します。 以下のコードは、REPLで:pasteすることで、簡単に動作を確認できます。 手続きプログラミング 破壊的操作をためらわない男らしいプログラミングスタイル。 def fac(n: Int) = { var result = 1 for (i <- 1 to n) { result *= i } result } 再帰で書くより速い(はず)です。 普通の再帰 初学者泣かせの再帰スタイル。 def fac(n: Int): Int = if (n == 0) 1 else n * fac(n - 1) // 再帰呼び出しの外側に * による演算がある このように書くとスタックをどんどん消費するので、後述する末尾再帰を使ったほうがいいで
This blog post came into being after a few discussions about Types in Scala after some of JavaOne’s parties in 2013. After those discussions I figured that many questions are often repeated by different people, during their learning of Scala. I though that we didn’t have a full list of all tricks what we can to with Types in Scala, so I decided to write such a list - giving real life examples why
Philipp Haller, Aleksandar Prokopec, Heather Miller, Viktor Klang, Roland Kuhn, Vojin Jovanovic 著 Eugene Yokota 訳 概要 Future は並列に実行される複数の演算を取り扱うのに便利な方法を提供する。それは効率的でノンブロッキングな方法だ。 大まかな考え方はシンプルなもので、Future はまだ存在しない計算結果に対するプレースホルダのようなものだ。 一般的に、Future の結果は並行に計算され後で集計することができる。 このように並行なタスクを合成することで、より速く、非同期で、ノンブロッキングな並列コードとなることが多い。 デフォルトでは、Future も Promise もノンブロッキングであり、典型的なブロッキング演算の代わりにコールバックを使う。 コールバックの使用を
twitter.com Scalaのはなし。 はじめての関数型言語 Common Lisp(Lispを関数型言語と呼ぶのかはおいておく) Beating the Averages ハッカーと画家 コンピュータ時代の創造者たち 作者: ポールグレアム,Paul Graham,川合史朗出版社/メーカー: オーム社発売日: 2005/01メディア: 単行本購入: 109人 クリック: 4,884回この商品を含むブログ (583件) を見る Lispを使っていたから素早く開発できた 素早さこそが競合に対する最大の武器だった d.hatena.ne.jp Lispだから成功できた Lispをやればお金持ちになれるに違いない(若気の至り) 読みまくった ANSI Common Lisp (スタンダードテキスト) 作者: ポールグレアム,Paul Graham,久野雅樹,須賀哲夫出版社/メーカー: ピア
以前、ScalaJpのgitter.imでDDDについて議論が盛んに行われてたけど、いずれログが消えちゃうのがもったいなくて、ここに内容を貼付けます。 scalajp/public - Gitter 要約すると実践DDD本出たらみんなで読もうぜ。ってことで。 実践ドメイン駆動設計 (Object Oriented Selection) 作者: ヴァーン・ヴァーノン,高木正弘出版社/メーカー: 翔泳社発売日: 2015/03/17メディア: 大型本この商品を含むブログ (1件) を見る ホントは、自分のブログとかじゃなくてGistとかがいいんだろうけど、見た目を整えるのが一番楽なので、ここに掲載しておきます。 一応、最初にまとめるにいたった経緯↓ xuwei-k 2015年2月24日 gitter、無料だとログの保存期間2週間って話だったけど、実は現状全部残ってる https://gitte
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く