タグ

scalaに関するhatz48のブックマーク (50)

  • The Scala Programming Language

    val fruits = List("apple", "banana", "avocado", "papaya") val countsToFruits = // count how many 'a' in each fruit fruits.groupBy(fruit => fruit.count(_ == 'a')) for (count, fruits) <- countsToFruits do println(s"with 'a' × $count = $fruits") // prints: with 'a' × 1 = List(apple) // prints: with 'a' × 2 = List(avocado) // prints: with 'a' × 3 = List(banana, papaya)

    The Scala Programming Language
    hatz48
    hatz48 2017/09/04
  • Scala implicit修飾子 まとめ - Qiita

    Scalaには他の言語ではなかなか見かけない,謎の修飾子「implicit」が存在します。 僕もScala始めたばかりの時には,意味がわからず困惑しました。ぐぐっても個々の使い方は載っていても,まとまって解説しているところはあまりなく・・・。 そこで,多少なりScalaをかじった僕がまとめておこうと思います。 Scalaレベルはポケモンでいうと,まだ20〜30Lvくらいなので,ご了承ください。 1. implicitの概要 implicitとは「暗黙的な」という意味です。逆の意味をもつ単語はexplicit。 C#を使っている人は,これらの言葉を聞いたことはあるでしょう。 (しかし,ScalaのそれとC#のそれでは,全く意味は異なりますが・・・。) implicitには様々な使い方があります。その中で全てに共通するのは,「暗黙的に何かをしてくれる」という点です。 これだけ聞くと,「それって

    Scala implicit修飾子 まとめ - Qiita
  • Scalaの学習コストを下げるための心得 - kmizuの日記

    追記:Twitterで、「それって、言語マニアにしかできない技のような気が」という指摘を受けました。自分としては一般的に適用可能な話だと思っていますが、あるいは自分の感性が著しくずれているのかもしれません。その辺承知の上でお読みください。 Scalaは習得が難しい言語だ、とよく言われます。また、実際問題として、Scalaの言語仕様の全体はそれなりに複雑でもあります。しかし、それはたとえばJavaでも言語仕様の全体像を把握するのは難しい話であり、Scalaに限った話ではありません。にも関わらず、Scalaの習得が難しいとよく言われるのはプログラミング言語の学習モデルが誤っているからではないかと最近思うようになりました。そこで、Scala(や他の言語も含めて)のコストを下げるために必要な心得についてちょっと書いてみます。 Scalaはオブジェクト指向言語である これは、Scalaは関数型プログ

    Scalaの学習コストを下げるための心得 - kmizuの日記
    hatz48
    hatz48 2016/10/12
  • PHPからScalaに乗り換えたチャットワークさん、その後どうですか?(前編) | HRナビ by リクルート

    当にScala化できるんですか? 増井:今日は、チャットワークをPHPからScalaに切り替えるお話を伺うためにやって来ました。 山:はい。 増井:僕がこの話を知ったのは、ちょうど2年ぐらい前に読んだブログのエントリだったんです。いきなり失礼なんですが、僕はこの話を知って、ぶっちゃけアホじゃないかと思ったんですよ。 山:あはは(笑) 増井:基的に開発言語やフレームワーク、方法論を同時に変えるって結構大きな変更ですよね? 山:そう思います。 増井:それなのに、この決断を発表された当時、御社にはScalaエンジニアがいなかったそうじゃないですか。「当に大丈夫なのかな?」と思って、気になってたんです。昨年春には「Scala採用を決めて一年たった、CTOの雑感」というエントリをポストされていましたが、さらに1年経った今はどんな状況なんですか? 山:ひと言で申し上げると「絶賛移行中」と

    PHPからScalaに乗り換えたチャットワークさん、その後どうですか?(前編) | HRナビ by リクルート
    hatz48
    hatz48 2016/09/19
  • Effective Scala

    Effective Scala Marius Eriksen, Twitter Inc. marius@twitter.com (@marius) [translated by Yuta Okamoto (@okapies) and Satoshi Kobayashi (@scova0731)] Table of Contents 序章 書式: ホワイトスペース, 命名, インポート, 中カッコ, パターンマッチ, コメント 型とジェネリクス: 戻り型アノテーション, 変位, 型エイリアス, 暗黙 コレクション: 階層, 使う, スタイル, 性能, Java コレクション 並行性: Future, コレクション 制御構造: 再帰, Return, forループと内包, require と assert 関数型プログラミング: 代数的データ型としてのケースクラス, Option, パターンマ

    Effective Scala
    hatz48
    hatz48 2016/04/23
  • Scalaジェネリクスメモ(Hishidama's Scala parameterized type Memo)

    Scalaジェネリクス(パラメータ化された型) Javaで言うジェネリクス(総称型)は、Scalaでは「パラメータ化された型(parameterized types)」と呼ぶらしい。 (でもなんか長ったらしいので、自分はひとまずジェネリクスと呼ぶことにする^^;) Scalaのジェネリクスは、型パラメーター(型引数)や型名を角括弧「[]」で囲む。(Javaは「<>」で囲む) Scalaでは、型名を囲む必要がある場合は全て角括弧に統一されているようだ。(classOf[]やisInstanceOf[]等)

  • Scalaのfor comprehension - はこべにっき ♨

    Scala の for 文には、いろんな機能がある(参考: Scalacheat - Scala Documentation)。for comprehension というやつで、for文を書くと実際には対象オブジェクトのメソッド呼び出しに変換される。 val nestedList = List(List(1,2,3), List(4,5,6)) for { list <- nestedList num <- list } println(num) たとえばこのようにコードを書くと、実際には以下の様にforeachを使ったコードが実行されているらしい。 val nestedList = List(List(1,2,3), List(4,5,6)) nestedList.foreach({ list => list.foreach({ num => println(num) }) }) for

    Scalaのfor comprehension - はこべにっき ♨
  • Scala採用を決めて一年たった、CTOの雑感 | チャットワーククリエーターズブログ

    こんにちは!ChatWork CTOの山です。 ChatWorkでは一年前に、PHPの独自フレームワークでつくられた大規模システムを、Scalaを使ってゼロベースでつくりなおすという決断をしました。 Scala採用までの経緯を三行で: カウボーイ開発で約4年間積み上げてきたPHPのシステムがもはや限界ゼロベースでつくりなおそうと開発合宿を開催。満場一致でScalaに決定!しかし社内にScalaを書ける人は誰もいないのであった・・(どうすんの・・?)参考記事: チャットワークの新しい開発言語とフレームワークを決める開発合宿を開催!その全貌を丸公開します。 というわけで勢いのままScala採用を決めたはいいものの、ここからどうしよう・・・という状態でした。 そこから約一年。ChatWorkのScala開発はどうなってるの?とご質問いただく機会も増えましたので、現在の状況含め、Scalaってど

    Scala採用を決めて一年たった、CTOの雑感 | チャットワーククリエーターズブログ
    hatz48
    hatz48 2015/10/04
  • bullet-scala: N+1クエリ問題を回避する - 貳佰伍拾陸夜日記

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

    bullet-scala: N+1クエリ問題を回避する - 貳佰伍拾陸夜日記
    hatz48
    hatz48 2015/08/21
  • Effective Scala

    Effective Scala Marius Eriksen, Twitter Inc. marius@twitter.com (@marius) [translated by Yuta Okamoto (@okapies) and Satoshi Kobayashi (@scova0731)] Table of Contents 序章 書式: ホワイトスペース, 命名, インポート, 中カッコ, パターンマッチ, コメント 型とジェネリクス: 戻り型アノテーション, 変位, 型エイリアス, 暗黙 コレクション: 階層, 使う, スタイル, 性能, Java コレクション 並行性: Future, コレクション 制御構造: 再帰, Return, forループと内包, require と assert 関数型プログラミング: 代数的データ型としてのケースクラス, Option, パターンマ

    Effective Scala
    hatz48
    hatz48 2015/05/18
  • Scalaで生SQL - SlickのSQL補間子にリストを渡す 他 - 貳佰伍拾陸夜日記

    ScalaSQLを書くのにSlickで便利にやる話. Slickでは生SQLを補間子(sql"...")で書けるけれど, リストが渡せなくてWHERE column IN ($list)できなかったり, 他にもいくつか不便なところがあったのでなんとかした. 最近になってScalaを書き始めたのでScala力を上げるための練習も兼ねている. なぜ生SQLか 社内では既にMackerelでSlickを使っていて, liftedな書き方をしているけれど, これはぱっと思いつくだけでも以下のような実運用上の課題があった. そもそもどの部分がクエリを表しているのかぱっと見わかりづらい 意図せず複雑なクエリになることがある 非Scalaエンジニアが読めない とくに最後のは, たとえばインフラ系のエンジニアが(クエリログを精査した結果などから)やばいクエリの出所を探そうと思ったときに全く手がつけられな

    Scalaで生SQL - SlickのSQL補間子にリストを渡す 他 - 貳佰伍拾陸夜日記
    hatz48
    hatz48 2015/05/04
  • ScalaのOptionステキさについてアツく語ってみる - ( ꒪⌓꒪) ゆるよろ日記

    今日は、ScalaのOptionの使い方について解説しますよ。OptionはScala使いにとってはなくてはならないものです。これを覚えてしまうと他の言語でもOptionを作りたくなる、かもしれない? Optionってなに? Option型は、値があるかないか分からない状態を表すものです。「Maybeモナド」とか言ってしまうとアレですがまぁそんなようなものらしいです。 Optionの定義 まずは、Optionの定義から見てみましょう。Option型は、抽象クラスOption[+A]と、Option[A]を継承して値がある場合のSome[+A]型とNoneオブジェクトがあります。 Option - Scala Standard Library API (Scaladoc) 2.10.0-20120530-022829-8d38079ab4 - scala.Option // Optionの抽

    ScalaのOptionステキさについてアツく語ってみる - ( ꒪⌓꒪) ゆるよろ日記
    hatz48
    hatz48 2013/11/14
    わかりやすいー
  • Scala入学式の資料

    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

    Scala入学式の資料
    hatz48
    hatz48 2013/09/30
  • ScalaでWebAppの開発に必要なN個のこと - tototoshi の日記

    PerlでWebAppの開発に必要なN個のこと - Islands in the byte stream の Scala 版です。 あるプログラミング言語で実際にWebAppを開発できるようになるまで、何が必要だろうか。言語仕様の習得は終えているとしよう。おそらく、最低限以下のような知識が必要だと思われる。とりあえずScalaについて知っていることを書いた。 パッケージマネージャ sbt が全てやってくれる。Scala のバージョン管理も、ライブラリのバージョン管理も。 http://www.scala-sbt.org/ Maven や gradle を使用することもできる。 アプリケーションサーバ Scala の Web アプリは 2 つのタイプに分けられる。Java の Servlet API を使用するものと、使用しないものである。どのフレームワーク、ライブラリを使うかによって変わっ

    ScalaでWebAppの開発に必要なN個のこと - tototoshi の日記
    hatz48
    hatz48 2013/09/11
  • Scalaでhttp

    Souce.fromURLで import scala.io.Source object Main { def main(args : Array[String]) : Unit = { println( Source.fromURL("http://blog.kzfmix.com/","utf8") .getLines .mkString ) } } proxyの指定は import scala.io.Source object Main { def main(args : Array[String]) : Unit = { System.setProperty("http.proxyHost","proxy.co.jp") System.setProperty("http.proxyPort","8080") println( Source.fromURL("http://blog.k

    Scalaでhttp
    hatz48
    hatz48 2012/07/11
  • 「HTMLスクレイピング in Scala」を改造しながら俺流Scalaコーディング手法を紹介してみる - ( ꒪⌓꒪) ゆるよろ日記

    短い中にいろいろなエッセンスが詰まったよいサンプルだと思ったので、id:noire722さん(@noire722)が書いた「HTMLスクレイピング in Scala」を、俺流に書き直してみました。 HTMLスクレイピング in Scala その2 - cignoir の日記 書き直す過程でどういう考えで修正したかを解説します。 第1段階 URLからList[String]を取得する関数を修正 まず、getSourceを見てみました。 def getSource(url: String, toParse: Boolean): List[String] = { var src = Source.fromURL(url, "ISO-8859-1").getLines.toList var charset: String = null val regex = new Regex("""charse

    「HTMLスクレイピング in Scala」を改造しながら俺流Scalaコーディング手法を紹介してみる - ( ꒪⌓꒪) ゆるよろ日記
    hatz48
    hatz48 2012/07/11
  • Effective Scala

    Effective Scala Marius Eriksen, Twitter Inc. marius@twitter.com (@marius) [translated by Yuta Okamoto(@okapies) and Satoshi Kobayashi(@scova0731)] Table of Contents 序章 書式: ホワイトスペース, 命名, インポート, 中カッコ, パターンマッチ, コメント 型とジェネリクス: 戻り型アノテーション, 変位, 型エイリアス, 暗黙 コレクション: 階層, 使う, スタイル, 性能, Java コレクション 並行性: Future, コレクション 制御構造: 再帰, Return, forループと内包, require と assert 関数型プログラミング: 代数的データ型としてのケースクラス, Option, パターンマッチ

    hatz48
    hatz48 2012/03/22
  • Scalaの基本的なコレクション4タイプと制御構文・例外

    Scalaの基的なコレクション4タイプと制御構文・例外:スケーラブルで関数型でオブジェクト指向なScala入門(3)(1/2 ページ) 基構文は、まだまだある 前回の記事「Scalaプログラミングで知っておきたい基構文まとめ」では、Scalaの構文ルール、基データ型と配列型の使い方、さらに演算子について紹介しました。今回はScalaのコレクションクラスの基的な使い方、条件分岐や繰り返しなどの制御構文やScalaでの例外の扱い方について紹介します。 第1回記事では、Scala標準のREPLとScala IDEで動作を確認してみました。今後記事のサンプルコードは、どちらで確認しても問題はありませんが、対話的に実行でき、1文ごとにコードの結果が分かって便利なので、基的にはREPLを用いて説明していきます。 Scala IDEを使用する場合、第1回記事の『Scala IDE for

    Scalaの基本的なコレクション4タイプと制御構文・例外
    hatz48
    hatz48 2012/03/16
  • 'scala' tag wiki

    Scala is a general-purpose programming language principally targeting the Java Virtual Machine. Designed to express common programming patterns in a concise, elegant, and type-safe way, it fuses both imperative and functional programming styles. Its key features are: an advanced static type system with type inference; function types; pattern-matching; implicit parameters and conversions; operator

    'scala' tag wiki
    hatz48
    hatz48 2012/02/11
  • スケーラブルで関数型でオブジェクト指向なScala入門

    Scalaの特徴を紹介し、基構文や関数、 クラスなど、Scalaの基的な機能について 解説する入門連載 EclipseでScalaプログラミングを始めるための基礎 スケーラブルで関数型でオブジェクト指向なScala入門(1) 概要や5つの特徴を紹介し、開発環境を構築して対話型実行環境「REPL」やEclipse上でHello Worldを実行します

    hatz48
    hatz48 2012/02/10