Skip to content

Commit

Permalink
[ update ] Japanese translation
Browse files Browse the repository at this point in the history
[ update ] PO files
  • Loading branch information
gemmaro committed Dec 10, 2023
1 parent 05bf50c commit 808c917
Show file tree
Hide file tree
Showing 3 changed files with 428 additions and 445 deletions.
15 changes: 4 additions & 11 deletions text-ja/chapter5.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,9 +59,6 @@ test`を走らせることで解答を確認してください。
このとき、`fib (n - 1)``fib (n - 2)`という式に対応した、2つの部分問題があります。
これらの2つの部分問題が解決されていれば、この部分的な答えを加算することで、全体の答えを組み立てることができます。

> なお、上の`factorial``fib`の例は意図通りに動きますが、よりPureScriptらしい実装では`if``then``else`を使う代わりにパターン照合を使うものでしょう。
> パターン照合の技法は後の章でお話しします。
## 配列上での再帰

再帰関数の定義は`Int`型だけに限定されるものではありません。
Expand All @@ -78,9 +75,9 @@ import Data.Maybe (fromMaybe)
{{#include ../exercises/chapter5/test/Examples.purs:length}}
```

この関数では配列が空かどうかで分岐するために`if ... then ... else`式を使っています
この`null`関数は空の配列で`true`を返します。
空の配列の長さはゼロであり、空でない配列の長さは尾鰭の長さより1大きいというわけです
この関数では、配列が空かどうかに基づいて分岐しています
`null`関数は、空配列については`true`を返します。
空配列は長さ0を、非空配列は尾鰭の長さより1大きい長さを持ちます

`tail`関数は与えられた配列から最初の要素を除いたものを`Maybe`に包んで返します。
配列が空であれば(つまり尾鰭がなければ)`Nothing`が返ります。
Expand Down Expand Up @@ -595,11 +592,7 @@ PureScriptは*末尾再帰最適化*の形でこの問題に対する部分的
例えば章の初めに示した`length`関数を再考しましょう。

```haskell
length :: forall a. Array a -> Int
length arr =
if null arr
then 0
else 1 + (length $ fromMaybe [] $ tail arr)
{{#include ../exercises/chapter5/test/Examples.purs:length}}
```

この実装は末尾再帰ではないので、大きな入力配列に対して実行されると、生成されたJavaScriptはスタックオーバーフローを発生させるでしょう。
Expand Down
Loading

0 comments on commit 808c917

Please sign in to comment.