『実践F#』学習 2012/06/09

2012/06/09 ~80ページまで。
1
brainfilesystem @brainfs

F# 、printfn "こんにちわ";; とかやると、インタラクティブコンソールでは正常に出力されるのに、 fscコマンドで実行バイナリにしてから実行すると文字化けする、不条理 .

2012-06-09 12:37:26
brainfilesystem @brainfs

書いてあった。UTF-8 BOMつきで保存したら日本語を正しく出力できた。

2012-06-09 12:42:28
brainfilesystem @brainfs

特殊な記号とか無しに複数行文字列リテラルをつかえるのね

2012-06-09 12:49:15
brainfilesystem @brainfs

あれ、ocamlって、float同士の計算のときは演算子の後ろにドットがついてた気がしたけどF# だとよろしくやってくれるのかな

2012-06-09 12:50:45
brainfilesystem @brainfs

10.0 /. 4.0 がエラーになってしまう

2012-06-09 12:51:34
brainfilesystem @brainfs

へー。コメントのネストもいけるのか

2012-06-09 12:53:51
brainfilesystem @brainfs

デフォルト変数it。pythonの_みたいなものか。perlだと$_だっけ。rubyではわすれた

2012-06-09 12:57:41
brainfilesystem @brainfs

F# でべき乗演算子はfloatだけなのね .

2012-06-09 13:07:41
brainfilesystem @brainfs

あれ、let fn a b = a * b;; fn 2 3;; fn 2.0 3.0;;ってやったらエラーになった、そういうものなのかな

2012-06-09 13:09:01
brainfilesystem @brainfs

原発のある場所に住んでる人間が国民でないという前提を追加すれば問題無い

2012-06-09 13:12:37
brainfilesystem @brainfs

あ、ずっとインタラクティブコンソールでやってた、記録するためにファイルに保存しよう

2012-06-09 13:24:12
brainfilesystem @brainfs

これで2点間の距離かなー let distance a b c d = let fn x y = (x ** 2.0 + y ** 2.0) ** 0.5 in abs (fn c d - fn a b);;

2012-06-09 13:25:42
brainfilesystem @brainfs

"F# では、トップレベルにおける宣言のみが文であり、それ以外のもの、つまりlet宣言内に書かれるものすべては式です"なるほどー .

2012-06-09 13:27:32
brainfilesystem @brainfs

変数のshadowing。推奨されない let fn = fun x -> let x = 2 in let x = 3 in x;; fn 1 (* => 3 *)

2012-06-09 13:33:54
brainfilesystem @brainfs

F# は!=じゃなくて<>なのね .

2012-06-09 13:37:58
brainfilesystem @brainfs

あっ、1時間すぎてた。今日のF# おわり。

2012-06-09 13:40:23
いげ太 @igeta

@brainfs F# の四則演算しはオーバーロードされているので OCaml のようにドット付きの演算子を使う必要はありませんです。

2012-06-09 15:56:12
いげ太 @igeta

@brainfs int のべき乗は pown でどうぞ。

2012-06-09 15:57:31
いげ太 @igeta

@brainfs let inline fn a b = a * b としてみてください。オーバーロードが引き継がれて fn 2. 3. が通るようになります。

2012-06-09 15:59:24