タグ

ブックマーク / zecl.hatenablog.com (3)

  • パケットの送受信量(F#) - ループとbreak - Bug Catharsis

    元ネタ パケットの送受信量 (C#)(F#) - SIN@SAPPOROWORKSの覚書 http://d.hatena.ne.jp/spw0022/20111116/1321437712 F#のwhileにbreakが無いのを知って愕然とした。F#では通常、whileは使用しないのかな? URL 2011-11-16 19:01:55 via Hatena 確かにC#やVB、Javaなどの手続き型言語でのプログラミングに慣れていると、最初はそう思っちゃいますよね。 これぞ「ループでbreak脳の恐怖!」...って、私もその道を通りました。 方法1:再帰を使う open System open System.Net.NetworkInformation let ar = NetworkInterface.GetAllNetworkInterfaces() |>Seq.map(fun n -

  • C#でもLazy Evaluationしたいよね。カリー化しーの、遅延評価しーの、トツギーノ。 - Bug Catharsis

    .NET Framework4.0には System.Lazy なんてものが追加されていて、 もしかして遅延評価標準サポートktkr?と、思わずwktkした人も少なくないのでは。 ですが、これはインスタンスの生成を遅らせるだけの代物でした。多くのC#erの期待は一瞬にして儚く散ってしまったのです。 C#でもLazy Evaluationしてみよう。ということで、標準ではサポートされてないんだけど、 やっぱりC#でも遅延評価したいというニーズはあると思うわけで。 以前作ったLazyなEvaluuation機能を投下しておきます。 以下、C#で遅延評価機能を提供するのサンプルコード。 using System; using System.Collections.Generic; namespace ClassLibrary1 { /// <summary> /// 遅延評価 /// </sum

    C#でもLazy Evaluationしたいよね。カリー化しーの、遅延評価しーの、トツギーノ。 - Bug Catharsis
  • ジェネリックとシリアライズを利用したオブジェクトのディープコピー - Bug Catharsis

    C#やVB.NETではオブジェクトのCloneを行うと参照のみがコピー(シャローコピー)される。 シャローコピーは、値を変更するとコピー元のデータも変更されてしまうので、なにかと都合がよくないことが多い。 オブジェクトのバックアップを取りたいような場合は値そのものをコピー(ディープコピー)するように実装しなければならない。 最も楽な方法は、オブジェクトをシリアライズし、それを別オブジェクトにデシリアライズする方法。 面倒くさがり屋さんは、とりあえずSerializableAttribute属性つけてコピりましょってゆー(^ω^;) 以下、C#によるサンプル。 using System; using System.IO; using System.Collections.Generic; using System.Runtime.Serialization.Formatters.Binary

    ジェネリックとシリアライズを利用したオブジェクトのディープコピー - Bug Catharsis
    kkotyy
    kkotyy 2009/11/03
    寛容なシリアル化の話。最初からDeepCopyを用意しとくんじゃなくて必要になったら作るようにしないと無用なところにも乱用されてパフォーマンスが落ちるので気をつけたいです。
  • 1