タグ

ブックマーク / xuwei-k.hatenablog.com (6)

  • モナドの本当の力を引き出す・・・モナドによる同期/非同期プログラミングの抽象化 - xuwei-k's blog

    以下の2つの続き ScalaでFutureとEitherを組み合わせたときに綺麗に書く方法 FutureとEitherの話の続き(ApplicativeとMonadの違い) 上記の2つ(特に最初の方)を読んだことを前提で書くので、読んでない人は先にそちらを読みましょう。 なんだか少し関連する話(?)で盛り上がっていて、書かないといけない気がしてきたので 非同期プログラミングの難しさとScalaのFuture そのtogetterの議論について色々書きたいこと*1もありますが、それは置いておき、表題の「モナドによる同期/非同期プログラミングの抽象化」について書きます。というか、(非同期プログラミングの話より)便乗してモナドとモナドトランスフォーマーの便利さを話したいだけかもしれません(?) 前回2つは「Future使って非同期にしても、だいたい関数の体同じでいけるよ」ということを書きました

    モナドの本当の力を引き出す・・・モナドによる同期/非同期プログラミングの抽象化 - xuwei-k's blog
  • Scalaのprivateとprivate[this]とバイナリ互換 - xuwei-k's blog

    Scalaのversionは2.10.4です。 とあるprivateなフィールドをobject内に定義 ライブラリをリリース それをpublicにしようとする mimaに怒られる(´・ω・`) 実は内部的にはコンパニオン同士でアクセスするためのメソッドが自動生成されてるから、そのメソッドを消すことになりバイナリ互換が崩れる!!! バイナリ互換のためには、privateではなくprivate[this]を使ったほうがいいのか? という知見を得た。(またscalikejdbcやってる最中に) まぁ崩れるけど、その自動生成メソッドを(javaから?)無理やり呼び出したりしない限り大丈夫?なので、もう少しmimaが賢くなるか、設定方法が柔軟になっていて欲しい気もする。 つらい・・・。

    Scalaのprivateとprivate[this]とバイナリ互換 - xuwei-k's blog
  • Scalaのマクロの基礎。評価タイミング、評価回数と、健全性 - xuwei-k's blog

    Scalaのマクロというより、一般的にマクロに共通する基であり重要な部分です。それをScala使って説明するだけです。 Scalaのマクロは、未だexperimentalという位置づけで、他の機能に比べれば仕様やAPIが変わりやすい状態です。そして、機能が搭載されてからあまり時間が経っていないこともあって*1あまり一般的に使われているとはいえない状態でしょう。しかし、Cなどのマクロとは違い、Scalaのものはある程度は格的にコンパイル時に抽象構文木を自由にいじれるものであり、使いこなせるようになってくるとなかなかおもしろいです。 マクロというと、ある程度の人はLispを思い浮かべると思いますが(?)、先ほど書いた「格的に抽象構文木いじれる」という点はまさにLispと共通する部分もあります(もちろん異なる部分も多くあります)。 つまり、これから説明することは、On Lisp*2 On

    Scalaのマクロの基礎。評価タイミング、評価回数と、健全性 - xuwei-k's blog
  • Scala初心者がPlay2.2を使ってtwitter連携アプリを作ろうとしたときにハマった罠 - xuwei-k's blog

    飛び入りで、芸者東京さんの勉強会で、初心者にScalaを教えるという勉強会をしてきた時の話です http://partake.in/events/5c793335-6b54-43f5-ac6f-6234b0847308 事例1 sbt0.12.xのlauncherがインストールされていた ↓ それで、Play2.2やろうとすると、エラーでる(0.13のlauncherが必要) ↓ 初心者だとそのエラーの意味が、すぐにはわからない ↓ 「sbtどうやって入れた?いつ頃入れた?」 ↓ 「homebrewでいれました」 ↓ brew updateする ↓ sbt以外のものも大量にupdateされて、とても時間を消費する 事例2 sbtでOutOfMemoryエラーでる ↓ インストール方法によるが、少なくともhomebrewは、デフォルトではJVMのオプション設定されないらしい*1 ↓ 結論とし

    Scala初心者がPlay2.2を使ってtwitter連携アプリを作ろうとしたときにハマった罠 - xuwei-k's blog
  • AndroidのfindViewByIdで型推論(?)させて、ちょっとだけ記述量減らす方法 - xuwei-k's blog

    Javaの話です。 Androidだと、普通xmlで画面を定義して、そのインスタンス生成するためにfindViewByIdというメソッドを使う。かなり多く使う。xmlで定義する時点で、型は(android.view.Viewのなんらかのサブクラスで)決まっているわけですが、それが必ず android.view.View 型で返ってくる。で、これ使いにくいし、ちょっと工夫すれば微妙に記述量減らせるんじゃないか?っていう話。 たとえば、大体のサンプルを見ても*1 Button myButton = (Button) findViewById(R.id.my_button); とか ListView view = (ListView)findViewById(R.id.my_view); となって なんで、型を2回も書かないといけないの?Scalaだったら、Typed Resources といっ

    AndroidのfindViewByIdで型推論(?)させて、ちょっとだけ記述量減らす方法 - xuwei-k's blog
    hiroshi_revolution
    hiroshi_revolution 2012/03/16
    AndroidのfindViewByIdで型推論(?)させて、ちょっとだけ記述量減らす方法 - scalaとか・・・
  • 「Scalaではじめるプログラミング(工学社)」の感想 - xuwei-k's blog

    ふふふふふ(´・ω・`)例のあのじゃなくて、この↓ですよ Scalaではじめるプログラミング―「Java」「.NET」のソフト資産を生かして開発を効率化! (I・O BOOKS) 作者: 赤間世紀,第二I O編集部出版社/メーカー: 工学社発売日: 2011/06メディア: 単行 クリック: 107回この商品を含むブログ (3件) を見る 題が「Scalaではじめるプログラミング」だし、それとまえがき読むかぎり、「Scala」が主というより、「プログラミングをはじめる」のが主で、それにたまたま(?)Scala使う場合って感じなんでしょうか? インストールに関しては、(完全にWindows前提だが!!)丁寧に書いてあっていいと思います 19ページ 「UTF-8」というコードで、「BOM」(Byte Order Mark)なしでなくてはならない オプションつければ、べつにUTF-8以外で

    「Scalaではじめるプログラミング(工学社)」の感想 - xuwei-k's blog
    hiroshi_revolution
    hiroshi_revolution 2011/06/16
    「Scalaではじめるプログラミング(工学社)」の感想 - scalaとか・・・
  • 1