File tree Expand file tree Collapse file tree 1 file changed +3
-3
lines changed
books/introduction-to-idris Expand file tree Collapse file tree 1 file changed +3
-3
lines changed Original file line number Diff line number Diff line change @@ -221,7 +221,7 @@ loop [] 6 | 6
221
221
6 |
222
222
```
223
223
224
- 注目してほしいのは途中で発生する式の大きさです。` foldl ` の方は逐次 ` + ` を計算できるので式の大きさが一定です。一方で ` foldr ` はリストの最後にいくまで計算できないので途中式大きくなってしまいます 。この途中式がスタックを消費するので効率が悪い上に、大きなリストを与えるとスタックオーバーフローが起きかねません。 ` foldl ` の方は途中式がないとコンパイラが見抜いてループに書き換えてくれます。なので ` loop ` 関数は本当にループなのです。どうして ` foldl ` で最適になって ` foldr ` で最適にならないかはここでは説明しないのでどういう条件で書き換えてくれるかは ** 末尾再帰の最適化** などのワードで検索してみて下さい。
224
+ 注目してほしいのは途中で発生する式の大きさです。` foldl ` の方は逐次 ` + ` を計算できるので式の大きさが一定です。一方で ` foldr ` はリストの最後にいくまで計算できないので途中式が大きくなってしまいます 。この途中式がスタックを消費するので効率が悪い上に、大きなリストを与えるとスタックオーバーフローが起きかねません。 ` foldl ` の方は途中式がないとコンパイラが見抜いてループに書き換えてくれます。なので ` loop ` 関数は本当にループなのです。どうして ` foldl ` で最適になって ` foldr ` で最適にならないかはここでは説明しないのでどういう条件で書き換えてくれるかは ** 末尾再帰の最適化** などのワードで検索してみて下さい。
225
225
226
226
## Foldable
227
227
@@ -335,7 +335,7 @@ map f (Just x) = Just (f x)
335
335
```
336
336
337
337
この ` map ` を使えば ` Just ` の方の値を制御できます。
338
- つ
338
+
339
339
次は ` fromMaybe ` です。 ` fromMaybe ` は ` Maybe a ` が ` Just x ` なら ` x ` を、 ` Nothing ` なら引数で与えた ` a ` の値を返します。
340
340
341
341
例: ` fromMaybe ` の動作例
@@ -366,7 +366,7 @@ fromMaybe "No evens"
366
366
(position list (\n => n `mod` 2 == 0)))
367
367
```
368
368
369
- ` map ` と ` fromMaybe ` はよく使うのでえておいて下さい 。因みにそんなによくは使わないんですが、今回のユースケースだとピタリとあてはまる関数に ` maybe ` があります。それを使えばもう少し短くなります。
369
+ ` map ` と ` fromMaybe ` はよく使うので覚えておいて下さい 。因みにそんなによくは使わないんですが、今回のユースケースだとピタリとあてはまる関数に ` maybe ` があります。それを使えばもう少し短くなります。
370
370
371
371
``` idris
372
372
let list = [1, 2, 3, 4] in
You can’t perform that action at this time.
0 commit comments