ぶろぐ

日記です

scala

間に合わなかった〜

まさかパーサー作るようなやつが来るとはー、むかつくぜ〜。これをきに学んどくか〜。

Monoidを使ってみた

Semigroup(半群)に単位元を加えたものがMonoid(単位的半群)。Semigroupは結合法則を持つ。ざっくり言うと「足し算のやり方と、ゼロはなんだ?」というのを持っていればMonoid。 import scalaz._ import Scalaz._ object HelloMonoid extends App { case clas…

zipしてmap

// 100円のりんご、200円のもも、150円のレモンを // それぞれ5個、10個、15個購入した時の値段を求めるようなやーつ // とあるプログラミング問題で使ったのでメモ object zip { def main(args: Array[String]) { val point = List(100, 200, 150) val coun…

map

haskell fmap Prelude> fmap (+3) (Just 2) Just 5 中置記法版 Prelude Data.Functor> (+3) <$> (Just 2) Just 5 scala mapで scala> Option(2) map (_+3) res3: Option[Int] = Some(5) scalazの記号で scala> 2.some &#8728; (_ + 3) res5: Option[Int] = S…

curry化と関数オブジェクト

defで定義したメソッドは関数オブジェクトじゃないらしい。toStringした時にとかとかになるのがファーストクラスオブジェクトな関数っぽい。 (Function2トレイトとかのtoStringでそう実装されておる) https://github.com/scala/scala/blob/2.11.x/src/libr…

ふつうのコトをふつうに

[0,100,200] というListを受け取って、MySQLに0〜99, 100〜199のidを検索するクエリを組みたい。 forを回してid1, id2で受け取って処理するっていう感じかーというC言語脳で考えつつ、値をスライディングしていくんだねというところに注目してscalaのコレク…

ネストしたリストを均す

ほかにもやり方ありそうだけど。 scala> List(List(1,2)).fold(List())(_:::_) res34: List[Int] = List(1, 2) scala> List(List(1,2), List(3,4)).fold(List())(_:::_) res35: List[Int] = List(1, 2, 3, 4) これflattenでいいじゃん。。情弱さにしけた。 s…

関数リテラル

//どちらも結果は同じですな //jsと同じで、無名関数を生成して変数に突っ込むか、普通に関数を生成するか、の違いみたい //scala初心者には関数リテラルの方はパッと頭に入ってこない。しかし記号がたくさんあって関数型っぽいかっこよさを感じる //…と思っ…

すから

scalaってフレームワークとかORMとかどれ使っていいか悩むな… playが王道かなー skinnyはreverse-scaffoldやばいと思って使ってみたけど上手く動かないことがしばしばあるんだよなー(エラー見てもわからん。 複雑なことをやるつもりはないので、なるべく楽…

たぷる

scala> var hoge = (1,2,3,4) hoge: (Int, Int, Int, Int) = (1,2,3,4) //上記、リストが作られると思ったけど、タプルと呼ぶみたい scala> var hoge = (1, "hoge") hoge: (Int, String) = (1,hoge) scala> var hoge: Tuple2[Int, String] = (1, "hoge") hog…

existsとforall

scala > //hogeが含まれているか scala> List("hoge", "hoge").exists(s => s == "hoge") res90: Boolean = true //全部hogeかどうか scala> List("hoge", "hoge").forall(s => s == "hoge") res91: Boolean = true //hogeが含まれているか scala> List("hog…

ふん!

import scala.io.Source // 桁数取得 def widthOfLength(s: String) = s.length.toString.length if (args.length > 0) { // ファイル読み込み val lines = Source.fromFile(args(0)).getLines().toList // 配列の先頭2つを取り出して処理。その結果と次の要…

scalaぱいせん

scala> var str = "String" str: String = String scala> str.exists(_.isUpper) res18: Boolean = true /****** Map関連 ******/ // 連想配列作る scala> var ca = Map("us" -> "Washington", "france" -> "paris") ca: scala.collection.immutable.Map[Str…