タグ

2015年3月10日のブックマーク (9件)

  • 関数合成のススメ 〜 オブジェクト指向プログラマへ捧げる関数型言語への導入その1 - ( ꒪⌓꒪) ゆるよろ日記

    こんにちわ。今日は、関数合成の話をします。 標準入力から何行か読み込んで、ソートして返す以下のようなScalaのコードを例にします。 例なので、あえて冗長なコードを書いてます。 このコードでは、4つの関数が用意されています(unlines/putstr/sort/lines)。 この4つの関数を組み合わせて、読み込んだ文字列を行に分解して、ソートして、 また改行コードをつけて文字列にもどして表示、ということをやっています。 object Main extends App { val in = scala.io.Source.stdin.getLines.mkString("\n") // 改行をつけて結合する関数 val unlines = (s:Seq[String]) => s.mkString("\n") // 文字列を表示する関数 val putStr = (s:String) =

    関数合成のススメ 〜 オブジェクト指向プログラマへ捧げる関数型言語への導入その1 - ( ꒪⌓꒪) ゆるよろ日記
    takc923
    takc923 2015/03/10
  • 「関数型Ruby」という病(2) - 関数合成 Proc#compose - ( ꒪⌓꒪) ゆるよろ日記

    記事は、Rubyを書くにあたって「いかにブロックを書かずにすませるか」を追求した、誰得な連載である。 注意点として、この記事は、プログラマ厨二病のひとつである「ラムダ症候群(λ-Syndrome)」に罹患した患者にRubyを書かせると、どんなヒドいことになるか実例を示したものであり、けしてこのようなプログラミングスタイルを推奨するものではない。 なぜ関数合成? まず、なぜ関数合成が必要か、そのモチベーションを示す。 前回、単なるメソッド呼び出しや一引数の関数適用のためだけにブロックを記述する必要はない、という話をした。 だが、以下のようなSymbolのArrayがあり、各要素をto_sした上でupcaseしたい場合はどうするか? irb(main):003:0> arr = [:user, :entry, :article, :comment, :category] => [:user,

    「関数型Ruby」という病(2) - 関数合成 Proc#compose - ( ꒪⌓꒪) ゆるよろ日記
    takc923
    takc923 2015/03/10
    “モニャーーーッ!!”
  • 「関数型Ruby」という病(1) - Symbol#to_proc, Object#method - ( ꒪⌓꒪) ゆるよろ日記

    この記事は、Rubyを書くにあたって「いかにブロックを書かずにすませるか」を追求した、誰得な連載である。 だって、ブロックって汚いじゃん?仮引数の|x|とかキモイ。 Symbol#to_proc 基中の基。 instance method Symbol#to_proc 以下のようなArrayがあって、 irb(main):003:0> arr = [:user, :entry, :article, :comment, :category] => [:user, :entry, :article, :comment, :category] 各要素をto_sしたかったら、 irb(main):004:0> arr.map{|s| s.to_s} => ["user", "entry", "article", "comment", "category"] と書くかわりに、 irb(main)

    「関数型Ruby」という病(1) - Symbol#to_proc, Object#method - ( ꒪⌓꒪) ゆるよろ日記
    takc923
    takc923 2015/03/10
  • カリー化と部分適用の違いと誤用

    kmizu @kmizu 正直に言うと、Groovy自体は別に好きでも嫌いでもないのだけど、カリー化してないのにcurryとかいうメソッド名付けてたり(標準で)、概念の無理解が目立つ部分があって、その辺がちょっと…という思いがあったり。 #scalajp #groovy 2011-09-04 19:43:37

    カリー化と部分適用の違いと誤用
    takc923
    takc923 2015/03/10
  • 「関数型Ruby」という病(3) - カリー化(Proc#curry, Proc#flip) - ( ꒪⌓꒪) ゆるよろ日記

    記事は、Rubyを書くにあたって「いかにブロックを書かずにすませるか」を追求した、誰得な連載である。 プログラマ厨二病をこじらせるとこんなヒドいことになるという実例を示すものであって、可読性やメンテナンス性についてのツッコミはご遠慮願いたい。が、こういうコードを書いても怒られない世界がくればいいと思うのでみんな関数型言語やればいい( ;゚皿゚)ノシΣ フィンギィィーーッ!!!。 カリー化とは 複数の引数をとる関数を、引数が「もとの関数の最初の引数」で戻り値が「もとの関数の残りの引数を取り結果を返す関数」であるような関数にすること。 http://ja.wikipedia.org/wiki/%E3%82%AB%E3%83%AA%E3%83%BC%E5%8C%96 つまり、多引数の関数を、「1引数の関数を返す関数」に変換することである。 以下の例にある3引数の関数fをカリー化したものは、関

    「関数型Ruby」という病(3) - カリー化(Proc#curry, Proc#flip) - ( ꒪⌓꒪) ゆるよろ日記
    takc923
    takc923 2015/03/10
    突然のおっぱい
  • Recipeが実行されるまでの仕組みと変数の関係 - Taste of Tech Topics

    こんにちは、Ruby大好きMiyakeです :-) "DevOps"という言葉がクローズアップされるようになってから、Chefがかなり流行ってきてますよね。 ブログとかTwitterをみていても、ここ1年で実際の業務や、開発環境を構築するのにChefを使ってる人がかなり増えたな~って思っています :-) 今日は、そんなChefを使っていく中で気になった、Recipeが実行されるまでの仕組みと、Recipe内で宣言している変数の関係について調べてみたので、紹介したいと思います。 実はこのRecipeが実行されるまでの仕組みを理解することで、Recipe内で宣言した変数の使い方が、より理解できるようになります :-) まずは、Recipeが実行されるまでの仕組みが見えてくるよう、わざと誤った変数の使い方をしたサンプルを書いてみました。 誤った変数の使い方をしているのは、リソースBlockとリソ

    Recipeが実行されるまでの仕組みと変数の関係 - Taste of Tech Topics
    takc923
    takc923 2015/03/10
    chefつらい
  • Chefのレシピは上から下に実行されるという誤解 | Engine Yard Blog JP

    Engine Yardを含むさまざまな場面で利用が広がったChefですが、その動作原理やアーキテクチャについてご存じない方もいることに気が付きました。細かなアーキテクチャを理解しなくても使うことができるというChefの長所を示しているともいえますが、細かな挙動を制御する際にはやはり動作原理などの知識があると役立ちます。 今回は表題のとおりレシピが実行される際のサイクルについてあまり知られていない部分を紹介します。 Chefの実行サイクルとリソースコレクション Chef(Chef Client、Chef Solo)が実行された際には直ちにサーバの設定が始まるわけではなく、さまざまなステップ毎に処理が実行されます。大まかには下記のようなステップになります。 Chef Serverとの通信、認証処理 Chef Serverからのクックブック、データの取得 クックブックのコンパイル ノードの設定

    Chefのレシピは上から下に実行されるという誤解 | Engine Yard Blog JP
    takc923
    takc923 2015/03/10
  • 男性に共感能力、想像力はないと思った方が良い - 節約時間セレブ

    takc923
    takc923 2015/03/10
    共感能力があるなら犬に共感を求められても共感しろよ。その例を出したってことはつまり共感能力のあるなしじゃなくて、女と犬と同じくらい女と男は思考が違うって話だろうに。例と主張が矛盾してる。
  • ぐだぐだInnoDB

    2015/06/10 db tech showcase 2015 Tokyo ログを貼り付けている部分が見にくくなっていますので、 http://yoku0825.blogspot.jp/search/label/5.7 などでも同じような内容が見られたりします

    ぐだぐだInnoDB
    takc923
    takc923 2015/03/10