Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    Kouji Matsui
    @kekyo

    この辺、検証してて確かに「あれ、これだとダメだな」とか迷ってた記憶がある

    うっ... markdownだった
    bleis-tift
    @bleis-tift
    正直、タプルで定義しない場合でもタプルで受け取れた方がいいと思うんですが、昔その提案をして蹴られたことがあります
    Kouji Matsui
    @kekyo
    理由は何て?
    bleis-tift
    @bleis-tift
    Githubではなく、fsbug(メール)だかなんだかでやり取りしていたころなので、ちょっと思い出せないですね・・・
    Kouji Matsui
    @kekyo
    使い分けれたほうが良い(効率とか?)
    bleis-tift
    @bleis-tift
    User Voiceに挙げてみてもいいかも?
    次に、バナナクリップについてですが、これを「演算子」とするのはF#の演算子と紛らわしいため、できれば避けたい用語です。
    「この括弧はバナナクリップと呼ばれます」くらいにしておいた方が好みです。
    omanuke
    @omanuke
    タプルで定義しない方はフィールド名?つけられるので大抵そっち使ってます
    Kouji Matsui
    @kekyo
    配列と一緒で文法、かな
    bleis-tift
    @bleis-tift
    type t = Hoge of xxx:int * Yyy:string // 大文字始まりにするか小文字始まりにするかで悩む
    大文字派
    Kouji Matsui
    @kekyo
    あー!それや。フィールド名のようなものが定義できたような気がしてたけど、再現できず、気のせいかと...
    bleis-tift
    @bleis-tift
    あぁ、タプルだとタプル自体にしか付けれませんからね
    type t = Hoge of Xxx:(int * string)
    omanuke
    @omanuke
    小文字派(´・ω・`)
    Kouji Matsui
    @kekyo
    あの説明だと、タプル使う事に抵抗ないと書いたけど、やっぱりちょっと抵抗ある気も(自分で書いてて)アレだった
    bleis-tift
    @bleis-tift
    次に細かいところですが、IsPlusEvenよりもIsPositiveEvenの方がいいかな、と思いました
    Kouji Matsui
    @kekyo
    (*´Д`)
    bleis-tift
    @bleis-tift
    あと、OptionをNullable相当とするのは抵抗があります。
    System.Nullableは値型しか持てませんし、System.Nullable + 参照型としても、型の扱いにかなり違いがあるので。
    例えば参照型ではnullであろうがなかろうがその型のメンバーにアクセスできるのに対し、Optionでは中に含む型のメンバーにはアクセスできない
    Kouji Matsui
    @kekyo
    どの辺りですか? C#erに説明するには(確かに頭の中では別物なんですが)値のあるなしを保持できると言う意味で引き合いに出しました
    bleis-tift
    @bleis-tift
    「存在する・しない」という観点からすると、Nullableに相当という説明はアリだと思います。ただ、何のエクスキューズもなしに「Nullableに相当」とするのが抵抗がある、という感じです。
    Kouji Matsui
    @kekyo
    あー了解です
    bleis-tift
    @bleis-tift
    まぁ、ここは細かい部分(こだわり/自己満足)なので、それをしたところで意図が正しく伝わるかといわれるとアレ
    あと同じ部分で、int.TryParseがコードには出てきませんが、説明には出てくるので、これはミスと思われます。
    Kouji Matsui
    @kekyo
    そうですね、これで意識しているのは、ほかの言語知っててパターンマッチング知らないと言う人に、ちょっとづつ段階的に応用出来そう感を感じてもらうというところだったので
    bleis-tift
    @bleis-tift
    最後に捕捉部分なんですが、「より複雑な論理演算子」とありますが、論理演算子は不適切な用語です。
    Kouji Matsui
    @kekyo
    あ、そこボツらせて書き直した部分で直しミスですね
    昨日の夜、MSDNga
    bleis-tift
    @bleis-tift
    全体的にはとても素晴らしいと思います。以上の指摘は、あくまで用語厨な自分からの意見なので、分かりやすさのために正確さを犠牲にする、という判断はアリだと思います。
    Kouji Matsui
    @kekyo
    がアレになってる事にきがついて、日本語的にどう呼ぶべきかちょっと迷ったんですが... これ、そのままだと「パターン」じゃないかと思ってて、でもパターンだとなんかあやふやな気がしてます。何かいい呼称があるといいんですが...
    bleis-tift
    @bleis-tift
    パターンでいいと思いますよ
    Kouji Matsui
    @kekyo
    ありがとうございます。わりと書き上げたらさくっと公開してしまうほうなので、参考に修正しておきます!
    callmekohei
    @callmekohei

    <mscorlibに関して>

    C#ポケットリファレンスという本の202ページにコレクションのクラス・インターフェースとして下記のlstの分が載ってたのですが、mscorlibから引っ張りだせません。名前が違うのでしょうか?ヒントを教えていただけると嬉しいです。

    module Test =
    
        let dotNetAPIList =
            typeof<obj>.Assembly.GetTypes ()
            |> Array.map ( fun t -> ( t.Namespace, t.Name ) )
            |> Array.sortBy id
            |> Array.distinct
    
        let mySeek targetName =
            dotNetAPIList
            |> Array.filter ( fun tpl -> snd tpl = targetName )
            |> Array.iter ( printfn "%A" )
    
        let lst = ["ICollection";"List";"LinkedList"
                   "HashSet";"Dictionary";"Queue";"Stack"]
    
        for v in lst do
            mySeek v

    結果

    ("System.Collections", "ICollection")
    ("System.Collections", "Queue")
    ("System.Collections", "Stack")
    Matsushima, Kazuhiro
    @Gab-km
    例えば LinkedList についてですが、まずはMSDNの該当ページを参照してみましょう。
    ここの頭の方に「アセンブリ」という項目がありますが、ここには「System.dll にあるよ!」と書いてあります。
    こういうので意図は合っていますか?
    callmekohei
    @callmekohei

    ガブさん!ありがとうございます!

    typeof<obj>.Assembly.GetTypes ()

    ということはここの部分が違ってるということっぽい??

    Matsushima, Kazuhiro
    @Gab-km

    obj (System.Object クラス)はmscorlibの持ち物なので、上のやり方だと

    (* obj型の入っているアセンブリにある型全てを取得する => mscorlibに入っている型だけ取得する *)
    typeof<obj>.Assembly.GetTypes ()

    という意味になるかと思います。

    callmekohei
    @callmekohei
    なるほどです。。
    このdllから情報を引っ張ればいいのか〜。どうやれば。。。
    Screen Shot 2016-05-16 at 20.34.29.png
    Matsushima, Kazuhiro
    @Gab-km
    ところで、上の lst で指定しているクラス名ですが、mscorlibにあるもの、つまりSystem.Collections直下にあるものを意図していますか?
    System.Collections.Genericの方を探す必要があったりしないでしょうか……?
    型名からは、ジェネリックあり/なしが判別できませんでしたので。。。
    callmekohei
    @callmekohei
    System.Collections.Genericも、含まれてます!それでも出てこなかったので、不思議におもったのですよ。
    Matsushima, Kazuhiro
    @Gab-km
    例えばですが、AppDomainにある全てのアセンブリを取ってきて、その中の全ての型を見て回る、というのはどうでしょうか?