実践F# 関数型プログラミング入門の正誤表の補足
技術評論社さんで「実践F# 関数型プログラミング入門」の正誤表がやっと公開されました。正誤表の公開が遅れまして、本当に申し訳ございませんでした。本当なら、9月には公開されないといけなかったのですが、諸般の事情で遅れてしまいました。公開されて正誤表には掲載できなかった箇所がございますので、以下に追加を掲載させていただきます。分量が多いのですが、ご容赦ください。また、諸般の事情から公開が遅れまして、本当に申し訳ございませんでした。
P14
誤 |
筆者が考える本書の読み方は、1章から読み進めることも、あるいは興味のある章から読んで、必要に応じて他の章を読むというものです。 |
正 |
本書の読み方ですが、1章から順に読み進めてもよいし、興味のある章を読みながら、必要に応じて他の章を読むのもよいでしょう。 |
P17
誤 |
参照透過性(参照透明性とも呼ばれます) |
正 |
参照透明性(参照透過性とも呼ばれます) |
P19 1
誤 |
アルゴリズム実装には関数型プログラミングに影響を受けて |
正 |
アルゴリズムは関数型プログラミングに影響を受けて |
P20 1.1
P27 図1-4
P27 1.4.1
誤 |
適材適所で言語が存在するのかということです。 |
正 |
適材適所で言語が存在するのでしょうか。 |
P28 1.4.2
誤 |
「解くべき問題」ということです。 |
正 |
「解くべき問題」です。 |
P28 1.4.2
誤 |
解き方をモデル化したのがプログラミング言語であるということです。 |
正 |
解き方をモデル化したのがプログラミング言語です。 |
P29 Column
誤 |
「Abstract Art」 |
正 |
「Abstract art」 |
P30 1.5.1
誤 |
メタ言語として開発された。 |
正 |
メタ言語として開発されたものである。 |
P30 1.5.1
誤 |
ラムダ計算で証明できるというものです。 |
正 |
ラムダ計算を使って証明できるというものです。 |
P32 1.5.3
誤 |
「不遇の関数型言語」と呼んでいます。 |
正 |
筆者は「不遇の関数型言語」と呼んでいます。 |
P33 1.6.1
誤 |
回路以外に流れることで他のトランジスタ回路へ影響を及ぼす |
正 |
回路以外に流れることでトランジスタ回路の動作に影響を及ぼす |
P36 1.7.1
誤 |
しかしながら、Webの世界では |
正 |
我々が利用しているWebの世界では |
P39 1.7.4
誤 |
不変性(英語でImmutable)という特徴があります。不変性とは、変数に値を代入すると(関数型言語の世界では、代入ではなく束縛と呼びます)値を変更できなくる性質のことです。 |
正 |
不変(英語でImmutable)な変数という特徴があります。不変な変数とは、変数に値を代入すると(関数型言語の世界では、代入ではなく束縛と呼びます)値を変更できないものです。 |
P54 表2-7
誤 |
(1行でも複数行) |
正 |
(1行でも複数行でも可) |
P81 4.4
誤 |
bool型に係る演算 |
正 |
bool型に関わる演算 |
P115 リスト5-1
誤 |
x |> f=> f x
|
正 |
y |> g => (|>) y g // 演算子の関数化
=> (fun x f -> f x) y g // インライン展開
=> let x = y in let f = g in f x // インライン展開
=> g y // 極めて単純なインライン関数でのみ行われる特殊な変換
|
P116 表5-1
誤 |
±1.5×10-45 ~ ±3.4×1038(7桁) |
正 |
±1.5×10 -45 ~ ±3.4×1038(7桁) |
P116 表5-1
誤 |
±5.0×10-324 ~ ±1.7×10308(15~16桁) |
正 |
±5.0×10 -324 ~ ±1.7×10308(15~16桁) |
P116 表5-1
誤 |
±1.0×10-28 ~ ±7.9×1028(28~29桁) |
正 |
±1.0×10 -28 ~ ±7.9×1028(28~29桁) |
P129 リスト5-29
誤 |
> printfn "%6.2d" 123.45;;12345val it : unit = ()> printfn "%+6d" 123; printfn "%+6d" -123;; +123 -123
|
正 |
> printfn "%+6d" 123; printfn "%+6d" -123;; +123 -123
|
P139 リスト5-47
誤 |
when句によるガートと網羅性 |
正 |
when句によるガードと網羅性 |
P141 5.14
誤 |
全体を全体を{ ... } |
正 |
全体を{ ... } |
P168 5.25.1
誤 |
failewithで例外を発生させる |
正 |
failwithで例外を発生させる |
P176 図6-1
誤 |
let func n = let f n = seq { 1..n } | > Seq.filter (fun n -> n%3=0 || n%5=0) n | > f | > Seq.sum
|
正 |
let func n = let f n = seq { 1..n } |> Seq.filter (fun n -> n%3=0 || n%5=0) n |> f |> Seq.sum
|
P176 図6-2
誤 |
let func n = let f n = seq { 1..n } | > Seq.filter (fun n -> n%3=0 || n%5=0) n | > f | > Seq.sum
|
正 |
let func n = let f n = seq { 1..n } |> Seq.filter (fun n -> n%3=0 || n%5=0) n |> f |> Seq.sum
|
P181 6.4
誤 |
ちなみにF#には、いわゆるbreakやcontinueなど、ループ内で使用する専用の制御文はありません。 |
正 |
脚注と重複した内容のため本文から削除させていただきます |
P188 6.7
誤 |
「(unit -> int)」 |
正 |
(unit -> int) |
P193 6.11
P202 6.17.1
誤 |
Recourceful.txt |
正 |
Resourceful.txt |
P210 図7-2
誤 |
7と8のノードの配置について |
正 |
7と8のノードを入れ替えます |
P212 7.3
誤 |
Queu<'T>クラス |
正 |
Queue<'T>クラス |
P213 7.4
誤 |
insertSort |
正 |
挿入ソートは英語でinsertion sortであり、関数名をinsertSortでなくinsertionSortとするのがより適切です。 |
P240 リスト7-65
誤 |
Seq.empty;;
|
正 |
> Seq.empty;;
|
P254 7.19.1
誤 |
union、diffrence、intersect(集合演算) |
正 |
union、difference、intersect(集合演算) |
P273 8.6.2
誤 |
オプショナル引数(optional argument)と呼ぶ |
正 |
オプショナル引数(optional argument)と言う |
P284 8.10
誤 |
リスト8-47のような |
正 |
リスト8-48のような |
P302 8.19
誤 |
型拡張には、内在的拡張(intrinsic extension)と任意的拡張(optional extension)の2種類があり |
正 |
本書で参照させていただいた「F#ドキュメント翻訳向上委員会」の最新のご提案では、intrinsic extensionの訳語は固有拡張、optional extensionの訳語は任意拡張となっています。 |
P306 8.20
P311 9
誤 |
.NET Frameworkのライブラリ使い方を何度も前章までで説明してきました。 |
正 |
.NET Frameworkのライブラリを前章までで何度も使用してきました。 |
P311 9
誤 |
Framewrokのライブラリは、アセンブリ(物理的な実行ファイルのことで、拡張子がDLLかEXEになります) |
正 |
Frameworkのライブラリは、アセンブリ(物理的な実行ファイルのことで、拡張子がDLLかEXEになります) |
P315 9.2.1
誤 |
リスト9-1に示した |
正 |
リスト9-3に示した |
P317 Column
誤 |
リスト9-1とリスト9-2に示した |
正 |
リスト9-3とリスト9-4に示したに示した |
P322 9.3
誤 |
丸括弧を付けるのが当たり前と説明しまし。 |
正 |
丸括弧を付けるのが当たり前と説明しました。 |
P323 Column
誤 |
機能の1として含まれています。 |
正 |
機能の1つとして含まれています。 |
P333 10
誤 |
公開する仕様を宣言宣言するものです。 |
正 |
公開する仕様を宣言するものです。 |
P344 10.1.3
誤 |
「モジュール宣言が必要」が必要 |
正 |
「モジュール宣言」が必要 |
P346 表10-2
誤 |
暗黙的にモジュール名をファイル名として使用できる |
正 |
暗黙的にファイル名をモジュール名として使用できる |
P362 図10-7
誤 |
実装コードとシグネチャの説明文について |
正 |
実装コードとシグネチャの説明文を入れ替えます |
P372 表11-3の補助説明
P384 11.2.1
誤 |
提供しますから、非同期プログラミングモデルを説明する前に同期プログラミングを振り返ってみましょう。 |
正 |
提供しますが、 非同期プログラミングモデルを説明する前に同期プログラミングを見直してみましょう。 |
P387 11.2.1
誤 |
.NET Frameworkが提供する非同期プログラミングとは、「BeginとEndという名前で始まるメソッド」を組み合わせることで(Begin/End パターン)実現しますから、複数の非同期プログラミングを組み合わせた場合を考えてみましょう。 |
正 |
.NET Frameworkが提供する非同期プログラミングは、「BeginとEndという名前で始まるメソッド」を組み合わせることで(Begin/End パターン)実現します。では、 複数の非同期プログラミングを組み合わせた場合を考えてみましょう。 |
P395 11.2.3
誤 |
表11-9に示したWebClient.AsyncDownloadString |
正 |
表11-10に示したWebClient.AsyncDownloadString |
P406 11.3
誤 |
エージェントと呼ばれるます |
正 |
エージェントと呼ばれます |
P420 図11-10
P420 図11-11
P429 12.2
誤 |
表12-3に示したquery関数 |
正 |
表12-4に示したquery関数 |
P452 表C-1
P459 索引