open System let a = 1 Console.WriteLine(a) a = 2 Console.WriteLine(a)これでaの値が2に変更されないのは分かるが、
「a = 2」でなぜ警告だけでコンパイルエラーにならないのか、
混乱の元ではないかと思っていたが、ここでの = 演算子は == と同じらしい。
実際に書いてみたら、確かに警告の内容も値を変更できないよ、
ではなくてboolを返しているけどそれを使ってないよ、だった。
練習問題で
printfn "%f" sqrt(2)はエラーになるため
printfn "%f" (sqrt(2.))にしないといけないというものについて、
カッコをつけようがつけまいが sqrt(2.) の評価順は変わらないのでは、と思っていたが、
カッコがない場合 printfn が 3つの引数「"%f"」「sqrt」「(2.)」を取ると解釈されるためだった。
演習問題のおさらい。 【問4】C# の while, for, break を使ったプログラムを再帰を使った F# で書きなおしてみるというもの。
- F# にはオフサイドルールがある
- 不等号には != ではなく <> を使用する
- 配列に添字をつけて要素を取り出すには list[0] ではなく list.[0] とドットをつける
解答例では loop の中に getNumIndex を定義する形だった、
なるほどこの中でしか使わない場合はそちらのほうがよさそうだ。
C# との比較に重点を置いた F# の入門勉強会とのことで、
C# 自体あまり詳しくないため心許なさも感じていたが、
丁寧に初歩から教えていただき、また仕事で Scala を使っていることを話すと
ところどころ Scala の話も交えつつで楽しい勉強会だった。
ありがとうございました。