タグ

ブックマーク / terazzo.hatenadiary.org (5)

  • [Scala] Re: Mapの置換にみるジェネリクス表現 - terazzoの日記

    お題: MapMapに変換するメソッドを作るという話題。 Mapの置換にみるジェネリクス表現 - プログラマーの脳みそ 元の話はJavaなんだけどScalaではできるかどうかやってみた。 バージョンはScala 2.11.2 ベースの実装 Javaのベースの実装 public static <K,V, R extends Map<V,K>, P extends Map<K,V>> R swap2(P origin, Supplier<R> supplier) { // 略 } これをScalaに機械的に翻訳してみる。 Mapはとりあえずmutableなやつとして実装も書く。 import scala.collection.mutable.Map def swap2[V, K, R <: Map[V, K], P <: Map[K, V]](origin: P, supplier: (

    [Scala] Re: Mapの置換にみるジェネリクス表現 - terazzoの日記
  • Javaで継続モナド - terazzoの日記

    実践Scala読んでたら継続モナドのこと理解出来そうな気がして来たので実装してみた。Javaで。 やれそうな気がする時は、やれる! この辺がとても参考になった。 Haskellの継続モナド(Continuation Monad)を理解するポイント - よくわかりません howm wiki - モナド 簡単な説明 上のサイトにある説明、 継続といいつつ、Contが表すのは継続というより、CPSな関数。 これでようやく何をする機能なのか分かった。モナドというのは、基的に何かを包んで、それによって合成したり後から利用したりを可能にするものなんだけど、継続モナドの場合、包まれている「何か」は、CPS(継続渡し形式)で書かれた関数ということだ。 いきなり高度なサンプルしか無いのが分かりにくい点だと思うので、簡単な具体例を使いながら実装を考えていくよ。 継続渡し形式とは (※前に書いた「内部イテレー

    Javaで継続モナド - terazzoの日記
    Nagise
    Nagise 2013/12/09
  • https://terazzo.hatenadiary.org/entry/20110615/1308161206

    Nagise
    Nagise 2011/06/16
  • [Java]Java 59 bytes FizzBuzz - terazzoの日記

    お題: Java 30byte FizzBuzz - プログラマーの脳みそ ぎ「FizzBuzzが110文字で書けるなら、1文字2bitの文字コードで記述すれば220bitで記述できる。byteに直すと28byteになる」 な「無茶言うなあ」 せ「だいたい、1文字2bitじゃ文字が4種類しか扱えないじゃない」 じゃあ、まじめに「1文字単位でちゃんと符号化できる」という縛りなら、実際何bitならFizzBuzzが記述できるかやってみた。 方針 まず、FizzBuzz自体をなるべく短くする。 ↓ 使用されている文字の種類を少なくする。 ↓ ソースがなるべく短くなる符号化の方法を作る。 ↓ 文字コード作成。 結果 FizzBuzz(97文字)は35種類の文字で書けて、上手く符号化すると59バイトになるよ。 daphne:FizzBuzz terazzo$ ls -l src/z.java -rw

    [Java]Java 59 bytes FizzBuzz - terazzoの日記
    Nagise
    Nagise 2011/02/27
    素晴らしい。この偉業をもっと称えるべき
  • HotSpot JVMの最適化オプションについて調べる - terazzoの日記

    Javaの最適化の議論で「インライン展開」「エスケープアナリシス」などの用語が出てきていて、気になって調べたところ、java実行時のオプションで最適化の方法を指定したり実行過程を表示したり出来るらしい。 主なオプションについて Java HotSpot VM Optionsにパフォーマンスに影響しそうなHotSpot VMのオプションが説明されている。 例: オプション 効果 -XX:+PrintCompilation メソッドがコンパイルされた際にメッセージを表示 -XX:+UseBiasedLocking Biased Lockingを使用する -XX:+OptimizeStringConcat 可能なら文字列の連結操作の最適化を行う -XX:+AggressiveOpts 将来のリリースでデフォルトになりそうな最適化フラグを有効にする ... ... たとえばjava起動時に-XX:

    HotSpot JVMの最適化オプションについて調べる - terazzoの日記
  • 1