0766デフォルトの名無しさん垢版2017/01/16(月) 13:40:50.81ID:of8fDlu0 Real World Functional Programming: With Examples in F# and C# かな。たしか英語の原書しかないけど でもまずプログラミングF#読んだ方がいいと思う 0767デフォルトの名無しさん垢版2017/01/16(月) 14:05:39.31ID:cZ5PGvSb 俺は実践F#関数型プログラミング入門って本で勉強したけど、なかなか良い本だったよ 書き方が平易な感じでサクサク進められて、基礎的な部分は一通りキッチリ習得できたと思う 0768デフォルトの名無しさん垢版2017/01/16(月) 16:56:59.00ID:rgwnOlnx 勉強中で悪いんだけど
■関数定義失敗 2.let ft = add >> add 3.let ft = add >> add 10
2.、3.が失敗する理由は何でしょうか? 0812デフォルトの名無しさん垢版2017/04/15(土) 21:07:11.49ID:PugiXhCo FSharpFuncが+演算子のオーバーロードを持ってないからだろ 0813デフォルトの名無しさん垢版2017/04/15(土) 22:13:15.85ID:TK0/vAtg>>812 let add x y = x+y を let add x y = 0 にしてみたんだけど、やっぱだめでした。
多分今回の件きちんと理解すると、 自分の中でごっちゃになってる部分が結構すっきりすると思います ここから先は、調べてみます ありがとうございました 0816デフォルトの名無しさん垢版2017/05/06(土) 19:25:54.59ID:2H+eGUwc X Y Z Nとスペースで区切られた文字列が標準入力から入力された時、 Console.ReadLine().Split [|' '|]を、一つのletでint X Y Z Nそれぞれに入れるのには どうしたらいいでしょうか? 0817デフォルトの名無しさん垢版2017/05/06(土) 22:00:28.94ID:ME74CfU1>>816 日本語でOK 0818デフォルトの名無しさん垢版2017/05/06(土) 22:02:02.03ID:h+8d1h53 英語でもOK 0819デフォルトの名無しさん垢版2017/05/06(土) 22:30:58.28ID:IkyXTWA8>>816 let [|X;Y;Z;N|]=... 0820デフォルトの名無しさん垢版2017/05/07(日) 01:04:25.17ID:2BTsLj3O>>819 ありがとうございます。
競技プログラミングにハマるプログラマのスレ 9 [無断転載禁止]c2ch.net https://tamae.2ch.net/test/read.cgi/prog/1493085730/l500829デフォルトの名無しさん垢版2017/05/16(火) 03:37:55.78ID:e1kn8e20 match Array.countBy (fun x -> x = i + 1) array with | [|(false, f); (true, t)|] -> t | [|(true, t); (false,f)|] -> t | [|(true,t)|] -> t | [|(false,f)|] -> 0
というのは正しいのですか?ケースが増えるにしたがって、めっちゃ増えちゃう気がするんだけど、 ループとか関数で処理することはできないんでしょうか。 0830デフォルトの名無しさん垢版2017/05/16(火) 07:10:14.68ID:DHMah8vu それフィルターじゃダメなの、 0831デフォルトの名無しさん垢版2017/05/16(火) 10:39:32.85ID:zhIbn0v9>>829 マッチ式の練習って意味ならこうかな match Array.countBy (fun x -> x = i + 1) array with | [| _ ; (true, count)|] | [| (true, count) ; _ |] -> count | _ -> 0
関数で探すならこんな感じか array |> Array.countBy (fun x -> x = i + 1) |> Array.find (fun (x, count) -> x = true) |> snd
単に条件マッチする要素数を数えたいだけなら Array.filter(fun x -> x = i + 1) array |> Array.length
またはこう書いたり Array.sumBy (fun x -> if x = i + 1 then 1 else 0) array
let m = CRI とするとmがCRIって関数のコピーになるから let n = m () + 1 としてもいい 0840デフォルトの名無しさん垢版2017/05/25(木) 12:41:52.55ID:rKV7x64q let CRI () = の()は、引数を取らない関数という意味じゃなくて、()を引数として 取る関数という意味だったんですね。 mが関数のコピーになってしまっていることは何となくわかっていましたが、 どうしたらいいかわかりませんでした。
type Point = {mutable x : int; mutable y : int} こういう定義があって、今はアドホックでこんな感じに書いてます。 0,0;0,1;0,2;0,3;0,4;0,5; 0,1;1,1;2,1;3,1;4,1;5,1; これをSplitでString[]にして、 static member fromCSV(s:string) = match s.Split[|','|] with | [|a;b|] -> {x = int a; y = int b} で読んでます。ダサいです。