実践F# 関数型プログラミング入門

サポートページ

お詫びと訂正(正誤表)

本書の以下の部分に誤りがありました。ここに訂正するとともに、ご迷惑をおかけしたことを深くお詫び申し上げます。

P.21 1.1.1

誤MPU4040
正Intel 4004

P.32 1.5.3

誤関数型専用コンピュータの存在から理解できるように
正関数型専用コンピュータが関数型言語の実行を最適化したように

P.33 1.6.1

誤「トランジスタの集積度は2年毎に倍増する」
正「トランジスタの複雑度は2年毎に倍増する」

P.*93 4.11

誤関数を評価値に得ることを
正新たな関数を評価値として得ることを

P.102 4.15

誤float関数
正floor関数

P.103 4.15

誤dticket
正ticket

P.106 リスト4-62

誤
areaOfCircle << round
正
round << areaOfCircle

P.115 5.2

誤インライン展開とはコンパイル時のβ変換であり、β変換とは関数定義による式の置き換えです。つまり以下のような変換を言います
正インライン展開とは、コンパイル時に、関数呼び出しをその定義によって置き換えることを言い、簡単に示すと以下のようになります

P.115 5.2

誤β変換は、通常、実行時の関数適用によって行われます。
正このような式の展開は、通常、実行時の関数適用によって行われます。

P.157 囲み

誤
// OCaml 互換
type 'a 'b 'c ... 型名 = ...

// .NET Framework互換
type 型名<'T, 'U, 'V...> = ...
正
// OCaml 互換
type ('a, 'b, 'c ...) 型名 = ...

// .NET Framework 互換
type 型名<'T, 'U, 'V ...> = ...

P.159 リスト5-86

誤
=> 0
正
=> 4

P.173 5.26.1

誤try ... with式のtry節にtry ... finally式をネスト
正try ... finally式のtry節にtry ... with式をネスト

P.177 表6-1

誤MySttuct
正MyStruct

P.183 6.4.3

誤fot ... in式は
正for ... in式は

P.185 6.6

誤参照は多相性を持ちます
正参照セルは多相性を持ちます

P.192 6.10

誤極端な話、普段は参照透明に使えるのに、ある特定の時刻にのみ特殊な結果を算出して参照透明にならない、などという
正極端な話、普段は参照透明であるかのように使えるのに、ある特定の時刻にのみ特殊な結果を算出して参照透明性を崩す動作をする、などという

P.193 図6.4

誤&X
正&x

P.201 Column

誤stdinとはTextReaderであり、stdoutとstderrとはTextWriterのことです。
正stdinはConsole.In、stdoutはConsole.Out、stderrはConsole.Errorのことです。

P.207 7.1.1

誤値制限になってしまう
正値制限のエラーになってしまう

P.211 リスト7-8

誤
-     Node(7, Node(3, Node(1, Empty, Empty),
正
-     Node(8, Node(3, Node(1, Empty, Empty),

P.211 リスト7-8

誤
  Node
    (7,
     Node
正
  Node
    (8,
     Node

P.214 7.4.1

誤なお、insertとinsertSortはどちらも末尾再帰ではない
正なお、リスト7-13で示したinsertとinsertionSortは、どちらも末尾再帰でない

P.218 リスト7-21

誤
// 2 番目の要素を 3 番目に
正
// 2 番目の要素を 0 番目に

P.221 7.8.2

誤max、min、average
正max、min、sum、average

P.226 リスト7-40

誤
([1..3], [10..30])
正
([1..3], [10..10..30])

P.229 7.8.15

誤exsits、forall
正exists、forall

P.240 リスト7-65

誤
> Seq.isEmpty emp, Seq.isEmpty sgl;;
正
> Seq.empty |> Seq.isEmpty, Seq.singleton "F#" |> Seq.isEmpty;;

P.250 リスト7-88

誤
printfn "%d" n
正
printf "%d " n

P.273 8.6.1

誤見立てを変えたことで、引数はタプルではありませんから、パイプラインには流せません
正見立てを変えたことによって、名前付きの引数はもはやタプルではありませんから、パイプラインに流すことはできません

P.291 リスト8-64

誤
SEACRET
正
SECRET

P.299 リスト8-75

誤
> type Foo =
正
> type MyClass =

P.317 9.2.1

誤意味しており、複数の引数は丸括弧で囲んだタプルにします
正意味しています

P.322 9.3

誤printfn関数の書式指定子である%Aに相当し
正printfn関数の書式指定子である%Oに相当し

P.347 リスト10-21

誤
Printfn "getCharge 6 =%A" (Charge.getCharge 20)
正
Printfn "getCharge 20 =%A" (Charge.getCharge 20)

P.359 10.2.1

誤Libraray1という名前空間を宣言してModule1というモジュール宣言を使用している
正Library1という名前空間を宣言してModule1というモジュール宣言を使用している

P.361 10.2.1

誤コンストラクターをプライベートに定義したと考えられますが
正コンストラクターをインターナルに定義したと考えられますが

P.362 図10-7

誤プライベートメンバーになる
正インターナルメンバーになる

P.371 11.1.3

誤遅延実行という特徴を実現するために、リストや配列というデータ型があるにも関わらず、
正リストや配列というデータ型があるにも関わらず、遅延実行という特徴を実現するために

P.372 図11-1

誤Seq.append (printfn "First = %A " n, Seq.singleton n)
正Seq.append (printfn "First = %A " n; Seq.empty) (Seq.singleton n)

P.372 図11-1

誤Seq.append (printfn "Second = %A " n, Seq.singleton n)
正Seq.append (printfn "Second = %A " n; Seq.empty) (Seq.singleton n)

P.372 図11-1

誤Seq.append (printfn "Third = %A " n, Seq.singleton n)
正Seq.append (printfn "Third = %A " n; Seq.empty) (Seq.singleton n)

P.373 図11-2

誤Seq.append (printfn "First = %A " n, Seq.singleton n)
正Seq.append (printfn "First = %A " n; Seq.empty) (Seq.singleton n)

P.373 図11-2

誤Seq.append (printfn "Second = %A " n, Seq.singleton n)
正Seq.append (printfn "Second = %A " n; Seq.empty) (Seq.singleton n)

P.373 図11-2

誤Seq.append (printfn "Third = %A " n, Seq.singleton n)
正Seq.append (printfn "Third = %A " n; Seq.empty) (Seq.singleton n)

P.380 リスト11-13

誤
Delay (<fun:myExp@57-1>)
val myExp : (unit -> int)

> myExp();; // もしくは、ownBuilder.run myExp でも良い
Return (16)
実行 (<fun:Return@11>)
val it : int = 16
正
Delay (<fun:myExp@30>)
val myExp : (unit -> int)

> myExp ();;
Bind (10 , <fun:myExp@32-1>)
Return (16)
実行 (<fun:Return@18>)
val it : int = 16

P.381 11.1.4

誤「10, fun y -> ...」という式が「(fun y -> ...) 10」という式へと評価
正「ownBuilder.Bind(10, fun y -> ...)」という式が「(fun y -> ...) 10」という式へと評価

P.381 11.1.4

誤ビルダークラスを使って与えた式を順番に実行できる計算式という
正与えられた式をビルダークラスを使って順番に実行できる計算式という

P.392 11.2.2

誤リスト11-18やリスト11-19は、キャンセル要求が通知された時に
正リスト11-19やリスト11-20は、リスト11-18でキャンセル要求が通知された時に