あどけない話

インターネットに関する技術的な話など

プログラミングHaskellの裏舞台

中村正三郎さんがプログラミングHaskellの書評を書いてくれましたので、触発されて少し補足します。

訳について

直訳を避け、意訳する

訳は、直訳を避け意訳を心がけました。原文が想像できない自然な日本語を目指しています。たとえば、章のはじめには必ずこういう表現があります。

We conclude with ...

これを

この章を ... で終える

と訳すと原文が想像できますし、自分が本を書く場合はこんな表現は使わないので不自然です。

この章を ... で締めくくる

とすると、少しはよくなりますが、まだ英語に影響されています。というわけで、こういう訳にしました。

この章の締めくくりとして...を説明する

カタカナを使わず、和語を使う

カタカナで説明した気になっている人は説明が下手だと僕は思っています。これは口頭での説明でも、文章でも同じです。文章を読まずに、訳の質を判断するには、カタカナの量を見るといい。カタカナばかりの訳本は買う価値はありません。英語で読んだ方がましです。

たとえば、primitive をプリミティブと訳しているなら、訳の質は低いと思います。いかに自然な日本語に置き換えるか、それが訳者の分かれ道です。実際、原書では、primitive が複数の意味で使われていました。

例1:

Up to this point we have viewed lists as a primitive notion in Haskell.

これまで、Haskell のリストを分解不可能なデータだとみなしてきた。

例2:

A formal meaning for list comprehensions by translation using more primitive features of the language is given in the Haskell Report.

Haskell Report で述べられているように、リスト内包表記の形式的意味は、言語のより基本的な機能へ変換することで定義される。

例3:

For efficiency reasons, this operator is provided as a primitive in Haskell.

効率の理由から、乗算演算子Haskellの組み込み関数として提供されている。

上記三つをすべてプリミティブと訳していたら、買う気がしないでしょう?

書き換えについて

Hutton さんに許可を頂いて書き換えた部分は以下の通りです。

66〜67ページ

原書では、product が foldr を使って定義されています。そして、効率上の理由から foldr が foldl に置き換わっている点を除いて、標準ライブラリでの定義と同じと書かれています。効率を上げるには foldl' を使うべきなので理由になっていないし、説明が回りくどくなっているので、foldl に変更して説明をすっきりさせました。つまり、単に「これは標準ライブラリでの定義そのものだ」と書き直しました。

8.8章

BNF の中で丸括弧が、「丸括弧を表す文字」と「結合の順位を表すメタ記号」の両方の意味で使われていて、分かりにくかったので、文字はシングルクォートで囲みました。

108ページ

原文では do 記法の例として、getCh を使った getChar のコードを載せています。getCh という関数はもう存在しないので、echo というコードに書き換えました。(echo の型を付け忘れてしました。ごめんなさい。)

11章

原文は、the countdown problem ですが、日本人に少しでも馴染みがあるようにと切符番号遊びに書き換えました。ですので、11.1節の前半は、完全に書き換えています。

13章

我々が中学校で習った数学的帰納法は、左辺と右辺が同じ形に変換できるという方法で、関数適用しか用いません。

原書の数学的帰納法は、関数の逆適用を使います。つまり、左辺を変形してある形に達すると、逆適用を使って右辺にたどり着くのです。これには天才的なひらめきが必要です。たとえば、1 - 1 = 0 と変形するのは簡単ですが、0 = 1 - 1 と変形するのはひらめきが必要でしょう? そんな感じなのです。

また、x を n と置き換えたりしないので、その関数適応は使っていいのか、証明すべきめざすところなのか、区別がつきません。ですので、原書の方法は難しいと考えて、証明をすべて書き換えました。

訳注の「日本人には難しい」という表現は、他の国の人には易しいという誤解も与えてしまいかねないので、語弊があります。日本人の部分を削って単に「難しい」と読んで下さい。

Hutton さんによれば、もともと原書も私の訳のような方法で書かれていたけど、途中で書き換えたそうです。原書の方法は、x を n と置き換えたりしないから、記号が減って見た目はいいのですが、やっぱり分かりにくいと思います。