Scala

scalaの練習問題やってみた

プログラミング言語 Scala Wiki - Scala練習問題 // x + y ただし「+」を使わない def add(x: Int, y: Int): Int = y match { case 0 => x case _ => add(succ(x), pred(y)) } // リストの合計 def sum(x: List[Int]): Int = x match { case x :: xs => add(…

gistのlanguage一覧からscalaが消えた!

ソースコードを貼り付けると色を付けてくれて、ついでにソースコードリポジトリのホスティングまでしてくれるgistというサービスがあります。はてな記法に見捨てられたscalaのコードも色付けしてくれる便利なサービスだったのですが、こないだ見たらlanguage…

ActorとアクターモデルとErlang

ここ数日「ScalaのActorが良く分からない」と一人嘆いていたのですが、なんかとっかかりになりそうな情報を見つけました。 アクターモデル むかーしむかし、アメリカの大学の偉い教授が「アクターモデル」という研究をしていました。これは「並行計算の数学…

Actorを学ぶ

Actorがまだよくわからない。インターネットで検索したり色んな人のブログを見たりしてもまだよくわからない。 APIを見てもtraitのActorとobjectのActorがあってうんにゃかもんにゃかだ。 JavaのThreadクラスみたい objectのActorはひとまず置いといて、trai…

Scalaで何か作ってみよう2

HttpClientを使ってTwitterにPostすることができました。やったね! http://twitter.com/syttru/status/1327714655 ハマったとこ TwitterにPostするとき、以下のリクエストヘッダーを送ると417エラーが返ってきてしまうみたいです。 Except: 100-Continueこ…

Scalaで何か作ってみよう1

プロジェクトフォルダを作る scalaでの開発にもMavenが使えるらしいです。MavenはJavaの開発で色々とお世話になってすっごく便利だったので使ってみよう。 DOSプロンプトから以下の長ーいコマンドを入力する。 mvn archetype:generate -DarchetypeGroupId=or…

scalaで何か作ろう

何か作るのが一番勉強になると思うので何か作ってみよう。 作るといえばbotだ そういえば昔twitterで「scala」と発言した人を手当たり次第にfollowするというのをやってたんだけど、手動でやってたので頓挫してしまったんだ。この作業を自動でできるようなbo…

Scalaのコンストラクタオーバーロード

Scalaのクラスでコンストラクタを何個も定義できる!! 「this」っていうメソッドを定義するとコンストラクタになるんだー 今の今まで知らなかった。。。 コンストラクタは1つしか定義できないと思ってました。びっくりした。 class Nanika(id: Int, name: …

newをサボる方法

ソースコード読んでたらちょっとしたテクニックを見つけました。何かちょっと嬉しい! なのでメモしておきます。 「new」をサボってるクラスがあるぞ 普通のクラスは「new」キーワードでインスタンス化します。 var nanika = new Nanika けれども、よく考え…

PartialFunction

scalaのソースを読んでたら「PartialFunction」というモノが出てきて気になったのでちょっと調べてみました。 「partial」というのは「部分的な」という意味だそうです。てことは「PartialFunction」は「部分的な関数」という意味なのかな。 関数クラスを継…

Scalaのマップとタプル

Scalaでハッシュマップみたいなのを作るときにはMapというクラスを使うと良いみたい。 var map = Map("key1"->"val1", "key2"->"val2") で、Mapのコンストラクタに渡す値は「タプル」と呼ばれているのだそうだ。 この「タプル」というのが柔軟すぎてわけがわ…

Scalaでフィボナッチ数列

久しぶりにScalaに触りたくなったので、先日Pythonで書いたフィボナッチ数列を出力するプログラムをScalaで書いてみよう。 object Fibonacci extends Application{ var nums = Map(1->BigInt(1), 2->BigInt(1)) def calc(i:Int): BigInt={ if(!nums.contains…

Actor

ScalaのAPIリファレンスで上の方に位置している「scala.actors」というのが気になる。 Javaをいじってた頃には見たことも聞いたこともない単語だけど、ドキュメントとか読んでいると頻繁に出てくるので、何かとんでもなくなく大事な何かなのだろうという雰囲…

JavaプログラマのためのScala構文早見表

寝る前にいいもの見つけてしまった。これは良い。ディ・モールト良い。 http://blogs.sun.com/sundararajan/entry/scala_for_java_programmers Scalaに興味のあるJavaプログラマ必見

Scalaでファイル操作

Scala勉強中。 テキストファイルを読み込んだり書き出したりしてみたくなりました。 いきなりピュアScalaで書くのは難しいだろうと思い、Javaのライブラリを使って書いたのですが、それでもちょっとハマりました。 代入式は Unit を返す いつもJavaで書いて…

スカラチェック

ミーハーな感じで「Scala」関係のフィードを手当たり次第にRSSリーダーに突っ込んでいたら、下の記事を見つけました。 ScalaCheck というHaskellから来たScalaユニットテストツール(?)の紹介記事です。英語はキライなので分かりそうな部分だけ Better uni…

カリー化

最近「カリー化」っていう単語をよく聞くようになったけど意味が分からないままちょっとだけ気になっていました。http://www.codecommit.com/blog/scala/function-currying-in-scala (英語キライ) 要するにこういうことらしい カリーじゃない関数。(以下…

Scalaが難しいので初歩の初歩からやり直すことにした(その3)

object HelloWorld { def main(args: Array[String]): Unit = { System.out.println("Hello, Scala!") } }二行目 def main(args: Array[String]): Unit = { 「def」ってなんだよ!!! 関数を定義するキーワードです。 「Unit」ってなんだよ!!! 関数の戻…

ScalaでFizzBazz

どうしてプログラマに・・・プログラムが書けないのか? これを読んで「ドキッ!」としたので、急いでScala書いてみた。アクセス修飾子がどうのこうのと重箱の隅を気にする前にFizzBazzくらい書けるようになろう。 実際にやってみたら、なんと書けなかった。 …

Scalaの「private object」「protected object」

コメント欄で、「クラスのアクセス修飾子はパッケージに対してのものだよ」と教えていただいたので、さらに突っ込んで色々と実験してみました。 発見したことを並べておきます。 複数のパッケージ宣言を1つのファイルで行える コメント欄で教えてもらったま…

Scalaが難しいので初歩の初歩からやり直すことにした(その2)

object HelloWorld { def main(args: Array[String]): Unit = { System.out.println("Hello, Scala!") } }一行目 object HelloWorld { 「object」ってなんだ?! 「class」じゃないのか?! object [オブジェクト名] って書くと、まずシングルトンなクラスを…

Scalaが難しいので初歩の初歩からやり直すことにした

Scalaというのは関数型言語という概念が入っているのだそうです。 他にも見たことのないようなモノがいっぱい出てくるので、私のようにJavaしか知らないようなプログラマーはパニックになります。 パニックになった結果をいちいち残しておくことにしました。…

Scalaでクラーク先生

Scalaの文法を調べていたら面白い書き方を見つけました。 list.add(obj)のような、「 オブジェクト . メソッド ( 引数 ) 」という記述を list add objというように、スペースで区切って書くことができるんだそうです。 ただ、引数を1つだけ取るメソッドでし…

Scalaっていう言語が気になる

Scalaっていうプログラミング言語の名前を聞いてちょっと気になってました。 JavaのVMで動くんだそうで、オブジェクト指向っぽかったり、関数型みたいなところもあったりで 詳しいことは何もわからないのですが、名前の響きがいいですよね。スカラ。守備力が…