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# アセンブリの再コンパイルが必要になる場合があります。
Ignore warnings about F# metadata.
FsControl2.0.0
にしてもエラーになります(^_^;;
Mzero
とかいうmodule
がないと。なんのことだろう?
ブレイスさんのおかけです!これでモナドを勉強してみます!一応インストールをまとめてみました!
http://callmekohei00.hatenablog.com/entry/2016/05/10/145727
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
もモナドプラスのインスタンスなので、継承関係にないのに渡せる
module Test_ListMonad =
type ListBuilder () =
member x.Bind (l, f) = l |> List.collect f
member x.Return l = [l]
member x.Zero () = []
let lb = new ListBuilder()
let listAll =
lb { let! x = [1..6]
let! y = [1..6]
let! z = [1..6]
if [x + y + z] = [7] then return [x; y; z]
}
|> printfn "%A"
match x with
| y -> ... // 変数パターン(変数名はy)