タグ

scalaに関するaritekuのブックマーク (65)

  • Scalaにおける括弧()と中括弧{}の違い (squerylでハマった備忘録) - xuwei-k's blog

    主にSqueryl( version 0.9.5-6 )の例で話しますが、括弧の違いの話はSquerylに限らずScala一般的な話です。 例えば、squerylのドキュメントのイントロダクションのページにこんな例があります。whereで条件絞り込んで、その後scoreInPercentageというfieldの平均求めています。 val avg: Option[Float] = from(grades)(g => where(g.subjectId === mathId) compute(avg(g.scoreInPercentage)) ) これを{}を使って以下のように書くと val avg: Option[Float] = from(grades){g => where(g.subjectId === mathId) compute(avg(g.scoreInPercentage))

    Scalaにおける括弧()と中括弧{}の違い (squerylでハマった備忘録) - xuwei-k's blog
  • Sprayの簡単な紹介 - アドファイブ日記(ミラー版)

    Scala Advent Calendar 2013の10日目担当記事です。みんなガチな人ばかりで怖いです。あまり期待しないでください。 ググっても日の記事があまりないSprayの紹介をしてみます。 あと表題と関係ないですが最近書いたPlayFrameworkにSlickやSecureSocialを入れたメモを掲載しておきます。 Play2.2へのSlickのインストール Play2の認証ライブラリSecuaSocialを使う Sprayについて Akkaをベースに非同期モデルで実装された超ハイパフォーマンスなHTTP処理フレームワークという感じのもの。型システムがあって非同期でマルチスレッド(アクター)対応しててプラグインがある程度揃ってるHTTPサーバやWebフレームワークってScalaにしばらなくても少なそうです。ハイフリークエンシ―なWebアプリケーションやREST-APIを作る

    Sprayの簡単な紹介 - アドファイブ日記(ミラー版)
  • 圏論とかモナドなんて簡単だからscalaを使って説明してみた - だらだらしてたいなぁ

    はじめに 関数型といえばモナド、モナドといえば難しいという事が巷で言われていますが、いきなりモナドを理解しようとするから難しく思えるだけで、圏論から順序を追って理解していけば全然難しく無いんだよって事を分かって貰えればいいなぁと思い書いて見ることにしました。 ただ、圏論といっても適用範囲がとっても広く、応用編になると分けわかんなくなってくるので、ここではプログラミング分野に特化したFP(functional programing)圏論*1について書きます。 また、説明を簡単にする為に細かい部分をいろいろ省略しています。学術的な定義としては正確ではないので、このエントリの説明は大体合ってる位の気持ちで読んでくださいね。 尚、ぼくは圏論の詳しい事はさっぱり分からないので、学問的な話を振られても回答できませんキリッ 圏ってなんなの? 圏論と言えば、圏です。 圏って何なのかというと、対象(obje

    圏論とかモナドなんて簡単だからscalaを使って説明してみた - だらだらしてたいなぁ
  • Option Monad - nullや存在しない値の処理を隠蔽する | Scala Cookbook

    Option を使いこなすと、関数型言語やScalaらしいプログラミングができるようになります。 どんなときに使うのか? nullの代わりに使う 関数の結果が得られない場合など (例:Map[K,V]#get(key)の返り値は Option[V]) モナド(monad)として使い、コードの流れを妨げないようにする for-comprehensionと共に使う モナドと聞いて怖じ気付く必要はありません。これらの使い方についてこれから詳しく説明していきます。 パターンマッチでOptionの値を取得 Option[A]は値が存在するか、しないかを表すクラスで、Some(a)とNoneの二種類の値があります。パターンマッチでこの二種類の値を処理するのが基です。 val m = Map("A" -> "Apple", "B" -> "Banana") def lookup(symbol:Stri

  • GitHub - scalikejdbc/scalikejdbc: A tidy SQL-based DB access library for Scala developers. This library naturally wraps JDBC APIs and provides you easy-to-use APIs.

    ariteku
    ariteku 2014/05/27
    where句を動的に。sqls.toAndConditionOpt
  • scalikejdbc/scalikejdbc-interpolation/src/test/scala/scalikejdbc/QueryInterfaceSpec.scala at 1.6.3 · scalikejdbc/scalikejdbc

  • javaっぽいコードをScalaっぽくして、あと部分関数とその合成

    ScalaJavaっぽいコードを書いて、それをScalaっぽくします。 あと部分関数を紹介して合成します。 Javaっぽいコードのときは可変な変数(変数)が存在していますが、Scalaっぽくなると不変な変数(定数)のみになります。 (可変な変数とか不変な変数とか、変な表現ですね・・・) 初めにScalaの変数について2つほど。 valで定義される値は定数である(Javaのfinal変数、Valueのこと) varで定義される値は変数である(Javaの普通の変数、Variableのこと)。 これだけ分かれば大丈夫! さて題。 題材として以下の問題を考えます。 0から9までの10個の要素を持つリストから偶数のみを抽出して、その値を2倍して返す問題を考えます。 要するに 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 という入力から 0, 4, 8, 12, 16 という結果を得る

    javaっぽいコードをScalaっぽくして、あと部分関数とその合成
    ariteku
    ariteku 2014/05/24
    部分関数
  • [Scala]文字列操作 | GENDOSU@NET

    文字列の長さを取得 scala> "test" length Int = 4 文字列の繰り返し scala> "abc" * 3 String = abcabcabc ()で、指定位置のcharを取り出す scala> "abcde"(2) Char = c 文字列の比較(<,>,<=,>=) scala> "abc" < "abd" Boolean = true StringBuilderに文字列を追加 scala> val str = "abc" scala> val strbuild = new StringBuilder scala> str.addString(strbuild) 文字列の先頭を大文字に変換 scala> "test".capitalize String = Test 文字列の文字を1文字ずつ処理をする scala> "abcdef".collect {a =>

    [Scala]文字列操作 | GENDOSU@NET
  • ScalaのPartialFunctionが便利ですよ - ( ꒪⌓꒪) ゆるよろ日記

    Scalaには、PartialFunctionというものがあります。 直訳すると部分関数ですが、これはなにかっていうと「特定の引数に対しては結果を返すけど、結果を返せない引数もあるような中途半端な関数」です。 どうやって使うのん? まぁ、ちょっと例を見てましょうや。PartialFunctionであるfooPfは、引数が"foo"だったら"bar"を返して、"foo"以外は知らんというてきとーな関数です。 scala> val fooPf:PartialFunction[String,String] = { case "foo" => "bar" } fooPf: PartialFunction[String,String] = <function1> scala> fooPf("foo") res5: String = bar scala> fooPf("hoge") scala.Mat

    ScalaのPartialFunctionが便利ですよ - ( ꒪⌓꒪) ゆるよろ日記
    ariteku
    ariteku 2014/05/24
    しっくりきた。“まぁ、ぶっちゃけて感覚的にいうと、PartialFunctionってのはmatch式のパターンを部分的にオブジェクトとして取り扱うことができるってことです。”
  • scalaをお仕事で使う時の3つの心得 - だらだらしてたいなぁ

    ・型を書け! ・名前を付けろ! ・合成しろ! 型を書け! 「は?型推論あるのにわざわざ型なんて書かなくていいし!」と思いましたか? では保守を任されて緊急でソースを理解したい時にこのようなコードだった場合はどうでしょう。 //XXとYYはどこか別の場所で定義されている class AAA[A <: XX, B <: YY] { def f(a:A,b:B) = a.xx + b.yy } 「戻りの型くらい書いとけ、ばかやろぅ」と言いたくなりましたね。それが普通の反応です。 class AAA[A <: XX, B <: YY] { def f(a:A,b:B):String = a.xx + b.yy } 戻り値の型がある場合と比べて見てください。コードの読みやすさが全く違います。このようにコーディングする際にほんのひと手間掛けるだけで、保守時のコストが大幅に削減出来ます。 保守のコストを

    scalaをお仕事で使う時の3つの心得 - だらだらしてたいなぁ
  • 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
  • slickでtuple22問題を回避する

    以前、社内用に書いたものから転載。 以前Playframework1.2.5で作った管理ツールをplay2.1.*でリプレイスするときにtuple22問題にあたったのでその回避策を。 Scalaの新しいバージョンはtupleの数も増えるらしいし、こんな問題は起きないようになるのかも。 Slickは非常に直感的で使いやすいORMだが、タプルベースの実装のため、22カラムまでしか扱うことができない。 回避策は主に3つあって テーブルを分割する タプルをネストさせる 必要なカラムだけをクラス定義に含める (引用 http://d.hatena.ne.jp/tototoshi/20121204/1354615421) リプレイスということもあり、すでに23カラム以上あるテーブルが存在していたので、タプルをネストする方法にした。 泥臭い方法だけど、「22カラムまでか〜」という理由で採用を見送られてい

  • Scala(スカラ)の紹介 (上) | ADN LAB's Blog

    こんにちは、k_oomoriです。今回は、タイトルの通りプログラミング言語Scalaについて書いてみたいと思います。 1/俯瞰風景 早速ですが、Scalaの特徴を俯瞰していきましょう。 ・オブジェクト指向と関数型のハイブリッド言語である Scalaは、関数型言語とオブジェクト指向(命令型)言語の特徴を統合したマルチパラダイムなプログラミング言語です。どちらのスタイルを用いるかはプログラマに委ねられており、関数型言語にすでに親しんでいる人はvalやイミュータブル(不変)オブジェクトを用いて関数型の記述を行えばいいし、命令型の方が適している問題に対してはvarとミュータブル(可変)オブジェクトによる命令型の書き方ができます。 ・静的 型月 型付け言語である 静的な型システムを持っているため、コンパイル時(というかIDEの力を借りればコーディング時)に型に関するエラーを確実に検出できます。さらに

  • LL脳がscalaの勉強を始めたよ その53 - Reinvention of the Wheel

    [まとめ] LL脳がscalaの勉強を始めたよ LL脳がscalaの勉強を始めたよ その52 Scalaコップの16章の続きをやってイキマス。今回はリストの1階メソッドについての後半をやっていきますよー 要素の選択:applyとindices リストの各要素にダイレクトにアクセスするにはapplyメソッドを使いますねー // 添字3の要素にアクセスします scala> List(1,2,3,4,5).apply(3) res4: Int = 4 // 添字4の要素にアクセスします scala> List(1,2,3,4,5).apply(4) res5: Int = 5 // Listに要素数を指定した場合は暗黙的にapplyメソッドが適用されます scala> List(1,2,3,4,5)(3) res6: Int = 4 実際のところapplyメソッドはdropとheadの組み合わ

    LL脳がscalaの勉強を始めたよ その53 - Reinvention of the Wheel
  • Scala2.11から、case classやメソッドの22制限が緩和されるらしいですよ! - xuwei-k's blog

    https://github.com/scala/scala/pull/2305/files 試しに引数が200個あるメソッドや、case classくらいまでならいけた。それ以上で、例えば1000くらいになると、コンパイラが変なところで落ちるか、"ClassFormatError: Too many arguments in method ..."とかになる 2013-03-31 21:48:39 via web URL 22制限がなくなる件、微妙に反響あったから補足しておくと、2.11.0.finalがでるのはおそらく一年後くらいなので、それまでは今のままですよ…念のため 2013-04-01 21:04:55 via Twitter for iPad https://github.com/scala/scala/pull/2426 メソッドのパラメータは、最大254個までになるみたい

  • やっとScalaのSlick2使ってDBテーブルの中を見れるようになった - 趣味プログラマがまれになんかしたことの記録

    いかの2つを参考にして、 Introduction — Slick 2.1.0-M1 documentation Connections / Transactions — Slick 2.1.0-M1 documentation こんなソースコードを書いてみた。 動かなかった例 import com.typesafe.slick.driver.ms.SQLServerDriver.simple._ object MSSQLConnectMain { def main(args: Array[String]) { class Party(tag: Tag) extends Table[(Int, String, String)](tag, "Party") { def id = column[Int]("PartyID", O.PrimaryKey) def partyType = colu

    やっとScalaのSlick2使ってDBテーブルの中を見れるようになった - 趣味プログラマがまれになんかしたことの記録
  • dfltweb1.onamae.com – このドメインはお名前.comで取得されています。

    このドメインは お名前.com から取得されました。 お名前.com は GMOインターネットグループ(株) が運営する国内シェアNo.1のドメイン登録サービスです。 ※表示価格は、全て税込です。 ※サービス品質維持のため、一時的に対象となる料金へ一定割合の「サービス維持調整費」を加算させていただきます。 ※1 「国内シェア」は、ICANN(インターネットのドメイン名などの資源を管理する非営利団体)の公表数値をもとに集計。gTLDが集計の対象。 日のドメイン登録業者(レジストラ)(「ICANNがレジストラとして認定した企業」一覧(InterNIC提供)内に「Japan」の記載があるもの)を対象。 レジストラ「GMO Internet Group, Inc. d/b/a Onamae.com」のシェア値を集計。 2023年5月時点の調査。

    dfltweb1.onamae.com – このドメインはお名前.comで取得されています。
  • Play Framework 2.2 Scala 最初の1週間で困った雑多なこと - tkawachi Blog

    Play Framework 2.2.1 + Scala を触り始めて一週間くらいたった。 触りながら困った点(というか「疑問に思った」程度のものが多いが)をメモしていたので晒しておく。 雑なメモで無知を晒すのは恥ずかしいが、同じことではまる人がいるかもしれないもんね。 間違っているところがあったらコメントで教えてもらえると大変嬉しいです。 Play 関連 Q: app/assets/ と public/ の違いは? A: app/assets は CoffeeScript, LESS など preprocess するもの。public はしないもの。 Q: bindFromRequest すると Cannot find any HTTP Request here って出るよ。 A: Action の先頭に implicit request => を付ける。 Action { implic

  • dfltweb1.onamae.com – このドメインはお名前.comで取得されています。

    このドメインは お名前.com から取得されました。 お名前.com は GMOインターネットグループ(株) が運営する国内シェアNo.1のドメイン登録サービスです。 ※表示価格は、全て税込です。 ※サービス品質維持のため、一時的に対象となる料金へ一定割合の「サービス維持調整費」を加算させていただきます。 ※1 「国内シェア」は、ICANN(インターネットのドメイン名などの資源を管理する非営利団体)の公表数値をもとに集計。gTLDが集計の対象。 日のドメイン登録業者(レジストラ)(「ICANNがレジストラとして認定した企業」一覧(InterNIC提供)内に「Japan」の記載があるもの)を対象。 レジストラ「GMO Internet Group, Inc. d/b/a Onamae.com」のシェア値を集計。 2023年5月時点の調査。

    dfltweb1.onamae.com – このドメインはお名前.comで取得されています。
  • Scalaを新鮮に保つ

    原文(投稿日:2011/12/09)へのリンク 先週、Scala界隈には、目まぐるしい出来事があったが、Yammerのメールリークが問題の発端である。その後に Typesafeが丁寧なフィードバックと、将来のScalaの改善について述べた 回答を公開した。 一番の改善部分は、Eclipse向けのScala IDEが予定されており、これは長い期間、開発が続いている。最初は、 Miles Sabin氏により始められ、今ではこのプロジェクトは、TypeSafeの従業員も開発に加わっており、現在のバージョン 2.0.0-RC2が存在している(訳注:既に2.0.0-RC4になっています)。他のコンパイル済みScalaライブラリのように、特定のScalaバージョンに固有のいくつものダウンロードモジュールがある。2.9.1, 2.8.3-SNAPSHOT、2.8.1のいずれかを使うことができる。 他の有

    Scalaを新鮮に保つ