Skip to content

Commit

Permalink
Begin to explain the dangerous case of a lambda abstraction
Browse files Browse the repository at this point in the history
  • Loading branch information
igrep committed Jun 9, 2024
1 parent 315308a commit 3374689
Showing 1 changed file with 5 additions and 11 deletions.
16 changes: 5 additions & 11 deletions assets/18.md
Original file line number Diff line number Diff line change
Expand Up @@ -748,7 +748,7 @@ greetEach = map (("Hello, " ++) . (++ "!"))

引数`xs``x`もなくなり、短くなりました!...が、`++) . (++`の辺り、ちょっと暗号っぽくもなってきてますね。この時点で読みづらい、という方もいらっしゃるかも知れません。

ポイントフリースタイルは、やればやるほど短く簡潔に書ける書き方画ですが、その分読みづらくなることもあります。更に極端な例として「[ポイントフリースタイルへの道 〜最大公約数編〜 - Qiita][1]」という記事があります。これまでの課題で紹介していない機能も利用していますが、参考までにどうぞ。 大事なことは、[**短く書ける人を上級者と呼ぶな**][2]ということです。
ポイントフリースタイルは、やればやるほど短く簡潔に書けるですが、その分読みづらくなることもあります。更に極端な例として「[ポイントフリースタイルへの道 〜最大公約数編〜 - Qiita][1]」という記事があります。これまでの課題で紹介していない機能も利用していますが、参考までにどうぞ。 大事なことは、[**短く書ける人を上級者と呼ぶな**][2]ということです。

[1]: https://qiita.com/necojackarc/items/1bccc9643857d3ce7896
[2]: https://wiki.haskell.jp/Hikers%20Guide%20to%20Haskell#%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88%E3%83%95%E3%83%AA%E3%83%BC%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB%E3%81%82%E3%82%8B%E3%81%84%E3%81%AF%E6%A7%98%E3%80%85%E3%81%AA%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB%E3%81%A8%E3%81%AE%E4%BB%98%E3%81%8D%E5%90%88%E3%81%84%E6%96%B9
Expand Down Expand Up @@ -1029,18 +1029,12 @@ tupleToEntry :: (String, Integer) -> Entry
tupleToEntry = \(cat, pri) -> Entry cat pri
```

課題8で↓のように書いていたのと実質同じようなもの
ラムダ抽象の引数におけるパターンマッチの方法は、以上の通り普通の関数定義などの場合と特に変わりません。しかしながらラムダ抽象の引数でのパターンマッチは、場合分けができないので注意が必要です

```
-- ...
let (divResult, modResult) = divMod numerator denominator
-- ...
```

でも、これは危ない!
例えば、

```
ghci> dangerous = \(Just x) -> x
```haskell
ghci> getMaybeValuebyForce = \(Just x) -> x
```

ラムダ抽象は
Expand Down

0 comments on commit 3374689

Please sign in to comment.