Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    omanuke
    @omanuke
    モッナード、いまだよくわからないマン(´・ω・`)
    話変わりますが、VS15からC#の中から使ってるF#の箇所にF12で飛べるようになってます?VSのおかげかReSharperのおかげかわからなくて…
    callmekohei
    @callmekohei
    なるほどです!FSharpPlusですね!(^_^)/
    bleis-tift
    @bleis-tift
    VS15をまだ入れてないw
    VSデフォルトでC#からF#に飛べるなら使い勝手かなり上がりますね
    あと、モナド自体は俺もよくわからんです!
    omanuke
    @omanuke
    えーブレイスさんが何を言ってるんですかー(´・ω・`)
    bleis-tift
    @bleis-tift
    使い方とか定義の仕方とかモナド則とかはわかるけど、モナド自体が結局どういうものなの?というのは分かってません!
    圏論をやればわかるようになるんだろうか・・・
    omanuke
    @omanuke
    むーん…この間Json.NetをParseするCompExpらしきものを作って便利ではあるけどほかの便利使い方が思いつかず…
    FSharpPlusみてみますー
    bleis-tift
    @bleis-tift
    @callmekohei F#でモナドの使い方とかを勉強するにはFSharpPlusはいいライブラリですけど、FSharpPlus自体はF# wayとは違うところにいるライブラリなので、がっつり入れ込まないようにした方がいいです
    omanuke
    @omanuke
    おお、なんかLensもはいってる
    bleis-tift
    @bleis-tift
    F#でモナドを勉強すべきなのかどうか、という葛藤。F#、標準ではoptionにすらコンピュテーション式用意してないし、いろいろとアレ
    色々入ってますよー
    callmekohei
    @callmekohei
    ブレイスさん!ありがとうございます(^_^)/
    bleis-tift
    @bleis-tift
    https://github.com/gmpl/FSharpPlus/blob/master/FSharpPlus/Kleisli.fs#L6 型パラメーターに'``ident`` が使えたのか、という気づき
    Matsushima, Kazuhiro
    @Gab-km
    F#、標準ではoptionにすらコンピュテーション式用意してない
    ほんこれ。Optionモジュールにはbindあるのに、Option<'T>には無いの…。
    あ、Option<'T>にあってもしかたないわw OptionBuilderがほしい…
    callmekohei
    @callmekohei
    This message was deleted
    Screen Shot 2016-05-10 at 09.24.47.png
    bleis-tift
    @bleis-tift
    なんだこのエラー・・・って思ったけど、VSでも警告出てるな・・・
    FSC: 警告 FS3186: F# メタデータ ノードをアセンブリ 'FsControl, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null' のテーブル 'ivals' の位置 1096 で読み取るときにエラーが発生しました。このノードには、一致する宣言がありませんでした。この警告を報告してください。使用している F# アセンブリの再コンパイルが必要になる場合があります。
    FSC: 警告 FS3186: F# メタデータ ノードをアセンブリ 'FsControl, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null' のテーブル 'ivals' の位置 1097 で読み取るときにエラーが発生しました。このノードには、一致する宣言がありませんでした。この警告を報告してください。使用している F# アセンブリの再コンパイルが必要になる場合があります。
    FSC: 警告 FS3186: F# メタデータ ノードをアセンブリ 'FsControl, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null' のテーブル 'ivals' の位置 1098 で読み取るときにエラーが発生しました。このノードには、一致する宣言がありませんでした。この警告を報告してください。使用している F# アセンブリの再コンパイルが必要になる場合があります。
    FSC: 警告 FS3186: F# メタデータ ノードをアセンブリ 'FsControl, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null' のテーブル 'ivals' の位置 1099 で読み取るときにエラーが発生しました。このノードには、一致する宣言がありませんでした。この警告を報告してください。使用している F# アセンブリの再コンパイルが必要になる場合があります。
    FSC: 警告 FS3186: F# メタデータ ノードをアセンブリ 'FsControl, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null' のテーブル 'ivals' の位置 1100 で読み取るときにエラーが発生しました。このノードには、一致する宣言がありませんでした。この警告を報告してください。使用している F# アセンブリの再コンパイルが必要になる場合があります。
    FSC: 警告 FS3186: F# メタデータ ノードをアセンブリ 'FsControl, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null' のテーブル 'ivals' の位置 1256 で読み取るときにエラーが発生しました。このノードには、一致する宣言がありませんでした。この警告を報告してください。使用している F# アセンブリの再コンパイルが必要になる場合があります。
    FSC: 警告 FS3186: F# メタデータ ノードをアセンブリ 'FsControl, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null' のテーブル 'ivals' の位置 1259 で読み取るときにエラーが発生しました。このノードには、一致する宣言がありませんでした。この警告を報告してください。使用している F# アセンブリの再コンパイルが必要になる場合があります。
    FSC: 警告 FS3186: F# メタデータ ノードをアセンブリ 'FsControl, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null' のテーブル 'ivals' の位置 1263 で読み取るときにエラーが発生しました。このノードには、一致する宣言がありませんでした。この警告を報告してください。使用している F# アセンブリの再コンパイルが必要になる場合があります。
    FSC: 警告 FS3186: F# メタデータ ノードをアセンブリ 'FsControl, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null' のテーブル 'ivals' の位置 1264 で読み取るときにエラーが発生しました。このノードには、一致する宣言がありませんでした。この警告を報告してください。使用している F# アセンブリの再コンパイルが必要になる場合があります。
    FSC: 警告 FS3186: F# メタデータ ノードをアセンブリ 'FsControl, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null' のテーブル 'ivals' の位置 1709 で読み取るときにエラーが発生しました。このノードには、一致する宣言がありませんでした。この警告を報告してください。使用している F# アセンブリの再コンパイルが必要になる場合があります。
    FSC: 警告 FS3186: F# メタデータ ノードをアセンブリ 'FsControl, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null' のテーブル 'ivals' の位置 2731 で読み取るときにエラーが発生しました。このノードには、一致する宣言がありませんでした。この警告を報告してください。使用している F# アセンブリの再コンパイルが必要になる場合があります。
    FSC: 警告 FS3186: F# メタデータ ノードをアセンブリ 'FsControl, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null' のテーブル 'ivals' の位置 2737 で読み取るときにエラーが発生しました。このノードには、一致する宣言がありませんでした。この警告を報告してください。使用している F# アセンブリの再コンパイルが必要になる場合があります。
    FSC: 警告 FS3186: F# メタデータ ノードをアセンブリ 'FsControl, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null' のテーブル 'ivals' の位置 2982 で読み取るときにエラーが発生しました。このノードには、一致する宣言がありませんでした。この警告を報告してください。使用している F# アセンブリの再コンパイルが必要になる場合があります。
    FSC: 警告 FS3186: F# メタデータ ノードをアセンブリ 'FsControl, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null' のテーブル 'ivals' の位置 3006 で読み取るときにエラーが発生しました。このノードには、一致する宣言がありませんでした。この警告を報告してください。使用している F# アセンブリの再コンパイルが必要になる場合があります。
    FSC: 警告 FS3186: F# メタデータ ノードをアセンブリ 'FsControl, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null' のテーブル 'ivals' の位置 3035 で読み取るときにエラーが発生しました。このノードには、一致する宣言がありませんでした。この警告を報告してください。使用している F# アセンブリの再コンパイルが必要になる場合があります。
    FSC: 警告 FS3186: F# メタデータ ノードをアセンブリ 'FsControl, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null' のテーブル 'ivals' の位置 3142 で読み取るときにエラーが発生しました。このノードには、一致する宣言がありませんでした。この警告を報告してください。使用している F# アセンブリの再コンパイルが必要になる場合があります。
    FSC: 警告 FS3186: F# メタデータ ノードをアセンブリ 'FsControl, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null' のテーブル 'ivals' の位置 3184 で読み取るときにエラーが発生しました。このノードには、一致する宣言がありませんでした。この警告を報告してください。使用している F# アセンブリの再コンパイルが必要になる場合があります。
    FSC: 警告 FS3186: F# メタデータ ノードをアセンブリ 'FsControl, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null' のテーブル 'ivals' の位置 3204 で読み取るときにエラーが発生しました。このノードには、一致する宣言がありませんでした。この警告を報告してください。使用している F# アセンブリの再コンパイルが必要になる場合があります。
    @callmekohei FsControlのバージョンが違うのが気になります
    FsControlを2.0.0にしたらどうなりますか?
    callmekohei
    @callmekohei

    あら。コメントなしで画像アップしたました、、、。すいません。

    ブレイスさん!やってみます!(^_^)/

    callmekohei
    @callmekohei
    あ、ちなみに3186エラーは無視していいって書いてありましたので、#nowarn "3186"で無視してます!
    Ignore warnings about F# metadata.
    ただやはりFsControl2.0.0にしてもエラーになります(^_^;;
    うーん、Mzeroとかいうmoduleがないと。なんのことだろう?
    Screen Shot 2016-05-10 at 14.40.41.png
    bleis-tift
    @bleis-tift
    Mzero・・・
    MZeroだと思うんですよね
    なんでzが小文字・・・
    callmekohei
    @callmekohei
    MZeroとはなんですか???
    こいつです
    そもそも、FsControlにFsControl.Core.TypeMethods.MonadPlusなんてものが無い・・・
    FSharpPlusのバージョンはいくつですか?
    callmekohei
    @callmekohei
    0.0.4です!
    bleis-tift
    @bleis-tift
    あー、なるほど
    1.0.0-CI00018ってバージョンを使ってました
    callmekohei
    @callmekohei
    それをnugetすればいいんですね。やってみます!
    callmekohei
    @callmekohei
    隊長!できましたー!
    Screen Shot 2016-05-10 at 14.51.55.png
    bleis-tift
    @bleis-tift
    よかった!
    callmekohei
    @callmekohei
    ブレイスさんのおかけです!これでモナドを勉強してみます!一応インストールをまとめてみました!
    http://callmekohei00.hatenablog.com/entry/2016/05/10/145727
    bleis-tift
    @bleis-tift
    元のコードの7を6にしちゃってますけど、FSharpPlusを使うとこんな感じでモナドプラスのインスタンスであれば渡せる関数とか作れちゃいます
    open FsControl
    open FSharpPlus
    
    // 足したら6になる場合に中身をタプル化し、
    // それ以外はmzeroを返す関数
    let inline f (a, b, c) =
      monadPlus {
        let! x = a
        let! y = b
        let! z = c
        if x + y + z = 6 then
          return (x, y, z)
      }
    
    // fに同じ引数を渡すだけのラッパー関数
    let inline f2 x = f (x, x, x)
    
    // f2をint listやint optionという継承関係にない型で呼び出している
    let listAll = f2 [1..5]
    let opt1 = f2 None
    let opt2 = f2 (Some 2)
    let opt3 = f2 (Some 3)
    
    [<EntryPoint>]
    let main argv =
      printfn "listAll: %A" listAll
      printfn "opt1: %A" opt1
      printfn "opt2: %A" opt2
      printfn "opt3: %A" opt3
      0
    'a list'a optionもモナドプラスのインスタンスなので、継承関係にないのに渡せる
    callmekohei
    @callmekohei
    ためになります!ありがとうございます!