タグ

scalaに関するYoYのブックマーク (27)

  • Argot, a command-line parser for Scala

    Abandonware Alert! THIS PROJECT IS DEAD. I will no longer be maintaining it. scopt does everything you’d need in a command-line options parser, and it’s what I’ll be using going forward. Introduction Argot is a command-line parser library for Scala, supporting: single-value and multi-value options single-value and multi-value parameters flag and non-flag options GNU-style long options, i.e., “–opt

    YoY
    YoY 2011/08/26
    コマンドライン引数を解析するアれ
  • C#/Scala/Python/Ruby/F#でデータ処理はどう違うのか?

    ■概要 以前、C#でのデータ処理について解説した。今回は、同様のデータ処理を、C#以外のプログラミング言語ではどうしているのか、(C#も含めて)以下の5つの言語を比較しながら説明していく。 C# Scala Python Ruby F# 結果としてできることは似ているのだが、その内部的な実装方法は言語ごとにさまざまである。 ■データ処理のおさらい 概念的には、「データ処理」というのは、Figure 1に典型例を示すように、条件選択や変換など、小さな処理単位に分けて、それをつないでいく形を取る。

    C#/Scala/Python/Ruby/F#でデータ処理はどう違うのか?
    YoY
    YoY 2011/07/26
     言語比較 あとで読むかも
  • Scalaメモ(Hishidama's Scala Memo)

    インストール [/2011-09-14] 最初のサンプル [/2011-06-07] コマンド scalac・fsc scala [/2013-06-08] 色々作ってみる [/2017-01-24]

    YoY
    YoY 2011/06/06
  • モナドはメタファーではない · eed3si9n

    2011-05-28 Scala界の関数型プログラミング一派を代表する論客の一人、@djspiewak が 2010年に書いた “Monads Are Not Metaphors” を翻訳しました。翻訳の公開は人より許諾済みです。翻訳の間違い等があれば遠慮なくご指摘ください。 2010年12月27日 Daniel Spiewak 著 2011年5月29日 e.e d3si9n 訳 僕は今、約束を破るところだ。およそ三年前、僕は絶対にモナドの記事だけは書かないと自分に約束した。既にモナドに関する記事は有り余っている。記事の数が多すぎてその多さだけで多くの人は混乱している。しかも全員がモナドに対して異なる扱い方をしているため、モナドの概念を初めて学ぼうとする者は、ブリトー、宇宙服、象、砂漠のベドウィン (訳注: アラブ系遊牧民) の共通項を探す努力をするハメになっている。 僕は、この混乱した

    YoY
    YoY 2011/05/30
    なるほど,わからん><
  • Java使いをScalaに引き込むサンプル集 | mwSoft

    前書き Scalaという言語をご存知ですか? Javaと同じくコンパイルされるとclassファイルになり、実行時はJVM上で動作する、オブジェクト指向+関数型のプログラミング言語です。 Scalaを開発したのはJavaのgenericsの設計を手がけたり、javacの開発をしていた経歴も持つMartin Odersky氏。 Scalaは後発の言語ということもあって、Javaを書いている時に感じる冗長さに対する様々な解が用意されています。 記事では、ScalaJavaのコードを比較しながら、JavaユーザがScalaに移った際に得られるメリットを提示していきます。 尚、序盤のサンプルコードはJavaユーザに伝わりやすいように、returnを明記したり、メソッドは必ず{ }で囲むなど、極力Javaっぽい記述をしています。 だいたいJavaと同じような書き方ができます ScalaJava

    YoY
    YoY 2011/02/15
  • 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ステキさについてアツく語ってみる - ( ꒪⌓꒪) ゆるよろ日記
  • ScalaでContinuationモナド - kmizuの日記

    Scalaのfor-comprehensionについて、これは単なる拡張for文みたいに機能が限定されたものではなく、モナドを使ったプログラムを簡潔に書ける汎用の構文だよーみたいな説明がよくなされる/したことがある。だが、じゃあ、実際にScalaでforで使えるモナドっぽいデータ型定義するのはどれくらい簡単にできるのか試したことが無かったので、ちょっと試してみた。よくあるMaybeやListモナドは既にOptionやList型として存在しているので、組み込みで存在しないContinuationモナドを作ってみた。 http://www.sampou.org/haskell/a-a-monads/html/contmonad.html のページの例をできるだけ忠実に再現することを目標にしたのだが、ScalaはHaskellよりも型推論が弱いので、人間型推論器となってあちこちに型注釈をしてまわ

    ScalaでContinuationモナド - kmizuの日記
  • Scala DSL

    クラウド時代に向けて: SimpleModel:オブジェクト・メタモデル。クラウド・アプリケーション向けの拡張中。 SimpleModeler:SimpleModelのモデルコンパイラ。 g3:メッセージフロー・フレームワーク。の開発を行っているわけだけれど、これらの技術のキーテクノロジとなるのがDSL(Domain Specific Language)である。 SimpleModelはメタモデルだけれど、Scala DSLで簡潔に記述できることが要件の一つになっている。そして、SimpleModelのモデルコンパイラがSimpleModeler。SimpleModelerはSimpleModelを記述したScala DSLの集まりをソフトウェアリポジトリとして使用する。 またg3は、Scala DSLで記述したメッセージフロー・モデルに基づいて動作する。 このように、このところはScal

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

    [まとめ] LL脳がscalaの勉強を始めたよ LL脳がscalaの勉強を始めたよ その42 Scalaコップの14章の続きをやりますよー、今回はScalaTestのSpecとかScalaCheckとかそのへんですねー 仕様としてのテスト プログラムの仕様とセットでテストを用意する開発手法なんかをよく聞きますが、今回は振る舞い駆動開発(behavior-driven development:BDD)にフィットしたScalaTestのテスト用トレイトSpecについてです。 BDDでは以下の2点を重視するみたいですねー コードに対して期待される振る舞いを人間が理解できる仕様にまとめる コードの振る舞いが仕様に合っているか確かめるテストを実施 Specでは振る舞いに対するテストを進めやすくするみたいデス、とりあえずサンプルやってみますかねー // テスト対象のクラス class Hoge{ d

    LL脳がscalaの勉強を始めたよ その43 - Reinvention of the Wheel
  • A Tour of Scala: Regular Expression Patterns | The Scala Programming Language

    Right-ignoring sequence patterns Right-ignoring patterns are a useful feature to decompose any data which is either a subtype of Seq[A] or a case class with an iterated formal parameter, like for instance Elem(prefix:String, label:String, attrs:MetaData, scp:NamespaceBinding, children:Node*) In those cases, Scala allows patterns having a wildcard-star _* in the rightmost position to stand for arbi

    YoY
    YoY 2010/09/13
    elem
  • Introduction

    Welcome to the tour This tour contains bite-sized introductions to the most frequently used features of Scala. It is intended for newcomers to the language. This is just a brief tour, not a full language tutorial. If you want a more detailed guide, consider obtaining a book or consulting other resources. What is Scala? Scala is a modern multi-paradigm programming language designed to express commo

    YoY
    YoY 2010/09/13
  • Scala で XML を Parse する(添削希望) - cooldaemonの備忘録

    Scala で XML を Parse してみたのですが、今ひとつカッコ悪いコードになってしまいました。 凄腕の Scala Hacker に添削して欲しい所です… orz import scala.io.Source import scala.xml.{Node, NodeSeq} import scala.xml.parsing.XhtmlParser object Test { def main(args:Array[String]) = { val source = Source.fromFile("/opt/local/share/scala-2.8/doc/scala-devel-docs/api/index.html") val xhtml = XhtmlParser(source) source.close val titles = List( "div" -> compa

    Scala で XML を Parse する(添削希望) - cooldaemonの備忘録
  • 高卒文系プログラマの日常 by zetta1985

    アンケートなんかはてな内をサーフィンしてたら見つけたので、とりあえず答えてみる。激しく長いので注意。 1.あなたのダイアリー名を教えてください。  ↑を見ればおk。  2.ダイアリー名の由来を聞かせてください。   俺の日記だって(俺が)すぐわかるように  3.ユーザー名(はてなのID)を教えてください。   zetta1985  4.ユーザー名の由来を聞かせてください。   DSの「すばらしきこのせかい」のキャラのセリフより。  でも先客がいたので、生年をつけた。  他の考えるのめんどかった。  5.IDのほかにハンドルネーム(ペンネーム)があれば教えてください。またその由来も。  ナギ、かな。今は使ってなくて、愛着も薄れた。  由来は、「凪」「薙ぎ」「和ぎ」の意味より。   6.性別聞いてもいいですか。   男。  7.生まれた年はいいかしら。   ユーザー名の後ろにくっついてますって

    YoY
    YoY 2010/09/10
  • Ten Things I Know: Scala Scala-Style-Guideの翻訳、要約

    2010年9月2日木曜日 Scala Scala-Style-Guideの翻訳、要約 英語の学習強化月間ということで今度はScala-Style-Guideの翻訳です。(もう9月ですが) ほとんどの項目は例として挙げられているコードを見れば十分だと思うのでFunction ValuesとSuffix Notationだけ翻訳しました。 前回と同様、あんまり質には期待しないでください。 Function Values 1. val f1 = { (a: Int, b: Int) => a + b } 2. val f2 = (a: Int, b: Int) => a + b 3. val f3 = (_: Int) + (_: Int) 4. val f4: (Int, Int) => Int = { _ + _ } 1と4を常に使うべきです。 2はこの例の場合短いですが、複数行に

    YoY
    YoY 2010/09/09
    コーディング規約
  • ひょっとしたら役に立つかもしれないScala Tips(3) - 無名関数+パターンマッチの略記法 - kmizuの日記

    久しぶりのScala Tips。Scalaをそこそこ使っている人でも意外と知らない方が多いようなので、一応。 たとえば、以下のようなコードがあったとする(やや恣意的な例だが): List("A", 1, 1.0, true, Nil).foreach{e => e match { case _: Int => println("Int") case _: Double => println("Double") case _: String => println("String") case _: Boolean => println("Boolean") case _ => println("?") }} このとき、e => e match { case ... }のようなパターンに関しては専用の略記法が用意されているおり、以下のように書くことができる。このパターンは高階関数を使うときに頻

    ひょっとしたら役に立つかもしれないScala Tips(3) - 無名関数+パターンマッチの略記法 - kmizuの日記
    YoY
    YoY 2010/08/06
  • ひょっとしたら役に立つかもしれないScala Tips(4) - パターンの漏れを検出する - Onion開発再開しつつある日記

    ScalaでMLやHaskellのalgebraic data typeを模倣するときの定番は、abstract class(or trait)とcase classを使って、 trait Exp case class Add(l: Exp, r: Exp) extends Exp case class Num(v: Int) extends Exp のようにすることだが、非常に残念なことに、これでは、MLなどと違って、パターンマッチ時にパターンの漏れがあってもコンパイル時にそれを検出することができない。たとえば、 def eval(e: Exp): Int = e match { case Add(l, r) => eval(l) + eval(r) //case Num(...)が抜けてる! } のようなコードを書いても、コンパイラは警告を出すことなく、黙って受け入れてしまう。このよう

    ひょっとしたら役に立つかもしれないScala Tips(4) - パターンの漏れを検出する - Onion開発再開しつつある日記
    YoY
    YoY 2010/08/06
  • Javaの限界を超えて実用化を目指す 新開発言語「Scala」のメリットとは~前編

    Scalaとは Scalaは、2003年にJavac(コンパイラ)やJavaのGenericsの設計/開発貢献者であるMartin Odersky氏(スイス・ローザンヌ工科大学教授)によって、開発が開始された比較的新しいプログラミング言語です。Javaは実用言語として幅広いシステムで使用されてきましたが、下位互換性を保つという要請の中、言語としての機能強化がなかなか進まないといった限界も見えてきています。そのような現状もあることから、ScalaJavaの後継として実用的な言語を目指して開発されています。 Scala最大の特徴は、Javaの良さを最大限継承しつつ、スクリプト言語や関数型言語の良いところも吸収し、先進的な機能/文法を取り入れている点です。また、今後のハードウェアのマルチコア化を見据え、簡易に並列処理プログラミングを行うことができるライブラリが付属しています。 Scalaのメリ

    Javaの限界を超えて実用化を目指す 新開発言語「Scala」のメリットとは~前編
  • 第18回 Scalaとパーザコンビネータ(実装編)

    筑波大学第三学群情報学類を卒業したのち、現在は、筑波大学大学院システム情報工学研究科コンピュータサイエンス専攻博士後期課程3年。プログラミング言語や処理系に強い興味を持っている。現在の研究テーマは、プログラミング言語の構文解析アルゴリズム。Scala勉強会を不定期で行うなど、研究の合間にScalaの普及活動を行っている。 Scalaにはパーザコンビネータライブラリという、構文解析を行うための専用ライブラリが存在します。今回は、前回に説明したHello, World!パーザをより簡潔に書けるように修正していくほか、JSONのサブセットのパーザの実装までを解説します。 Hello, World!パーザを改良してみる strメソッド - 文字列を直接扱えるように 前回説明したリスト5のパーザは、プリミティブとして1文字にマッチするパーザしか扱えなかったため、いちいちそれを~でつないでいくのが面倒

    第18回 Scalaとパーザコンビネータ(実装編)
  • トレイトの初期化処理で抽象 val にアクセスする - NetPenguinの日記

    トレイトのメンバとして抽象 val を宣言した場合、初期化処理のタイミングでは、その val の値が null になっていることがあります。 以下の例では、Foo の初期化時には value2 が null になっています。 object Sample1 { def main(args: Array[String]) { val foo = new FooImpl println("[main]foo.value1 is "+foo.value1) println("[main]foo.value2 is "+foo.value2) } trait Foo { // value は実装クラスで設定する val value1: String val value2: String // Foo の初期化処理 println("[foo]value1 is "+value1) println("

    トレイトの初期化処理で抽象 val にアクセスする - NetPenguinの日記
    YoY
    YoY 2010/07/26
    初期化
  • scala.io.Sourceとscala.xml.parsing.XhtmlParser - ( ꒪⌓꒪) ゆるよろ日記

    scalaでファイルやURLからテキストを読み込みたいときには、scala.io.Sourceオブジェクトとscala.io.Sourceクラスを利用するのが便利です。 scala.io.Sourceオブジェクトを利用するとファイルからの文字列の読込や、URLからフェッチする処理はこんなふうに簡単に書けます。 import scala.io.Source import scala.xml.XML import scala.xml.parsing.{ConstructingParser,XhtmlParser} // textファイルから読み込んで出力 Source.fromFile("test.txt","UTF-8").foreach(print) // URLからXMLを取得(twitterのxml) val src = scala.io.Source.fromURL("http://

    scala.io.Sourceとscala.xml.parsing.XhtmlParser - ( ꒪⌓꒪) ゆるよろ日記
    YoY
    YoY 2010/07/21
    xml,html