Skip to content

Commit 72e9cec

Browse files
authored
Merge pull request KeenS#14 from susurri/patch-2
fix: typo in list-maybe-either.md
2 parents cdb8b95 + 125e68e commit 72e9cec

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

books/introduction-to-idris/list-maybe-either.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ loop [] 6 | 6
221221
6 |
222222
```
223223

224-
注目してほしいのは途中で発生する式の大きさです。`foldl` の方は逐次 `+` を計算できるので式の大きさが一定です。一方で `foldr` はリストの最後にいくまで計算できないので途中式大きくなってしまいます。この途中式がスタックを消費するので効率が悪い上に、大きなリストを与えるとスタックオーバーフローが起きかねません。 `foldl` の方は途中式がないとコンパイラが見抜いてループに書き換えてくれます。なので `loop` 関数は本当にループなのです。どうして `foldl` で最適になって `foldr` で最適にならないかはここでは説明しないのでどういう条件で書き換えてくれるかは **末尾再帰の最適化** などのワードで検索してみて下さい。
224+
注目してほしいのは途中で発生する式の大きさです。`foldl` の方は逐次 `+` を計算できるので式の大きさが一定です。一方で `foldr` はリストの最後にいくまで計算できないので途中式が大きくなってしまいます。この途中式がスタックを消費するので効率が悪い上に、大きなリストを与えるとスタックオーバーフローが起きかねません。 `foldl` の方は途中式がないとコンパイラが見抜いてループに書き換えてくれます。なので `loop` 関数は本当にループなのです。どうして `foldl` で最適になって `foldr` で最適にならないかはここでは説明しないのでどういう条件で書き換えてくれるかは **末尾再帰の最適化** などのワードで検索してみて下さい。
225225

226226
## Foldable
227227

@@ -335,7 +335,7 @@ map f (Just x) = Just (f x)
335335
```
336336

337337
この `map` を使えば `Just` の方の値を制御できます。
338-
338+
339339
次は `fromMaybe` です。 `fromMaybe``Maybe a``Just x` なら `x` を、 `Nothing` なら引数で与えた `a` の値を返します。
340340

341341
例: `fromMaybe` の動作例
@@ -366,7 +366,7 @@ fromMaybe "No evens"
366366
(position list (\n => n `mod` 2 == 0)))
367367
```
368368

369-
`map``fromMaybe` はよく使うのでえておいて下さい。因みにそんなによくは使わないんですが、今回のユースケースだとピタリとあてはまる関数に `maybe` があります。それを使えばもう少し短くなります。
369+
`map``fromMaybe` はよく使うので覚えておいて下さい。因みにそんなによくは使わないんですが、今回のユースケースだとピタリとあてはまる関数に `maybe` があります。それを使えばもう少し短くなります。
370370

371371
```idris
372372
let list = [1, 2, 3, 4] in

0 commit comments

Comments
 (0)