Commit 0a9bb6d 1 parent aff32a7 commit 0a9bb6d Copy full SHA for 0a9bb6d
File tree 1 file changed +10
-4
lines changed
1 file changed +10
-4
lines changed Original file line number Diff line number Diff line change 5
5
6
6
## 必要な知識
7
7
8
+ Haskellには、コードを極めて簡潔に書くテクニックが、たくさんあります。この課題では、そうしたテクニックのうち、特によく使われるものを紹介します。みなさんがHaskellを書くときに必ずしもここで学習したことを使う必要はないですが、既存のHaskell製コードの中でも高確率で使われているので、是非習得してください。
9
+
8
10
### (カリー化された)関数の部分適用
9
11
12
+ まずは、関数の部分適用という手法を知ることで、ありふれた関数の定義を書かずに済ませられるようになるほか、Haskellにおける関数` -> ` の秘密も知りましょう。
13
+
10
14
` map ` 関数
11
15
12
- ```
16
+ ``` haskell
13
17
ghci> : t map
14
18
map :: (a -> b ) -> [a ] -> [b ]
15
19
```
16
20
17
21
関数`(a -> b)`とリスト`[a]`という、 引数を二つ受け取る
18
22
19
- ```
23
+ ```haskell
20
24
ghci> map (\ x -> x * 2 ) [3 , 8 , 9 ]
21
25
[6 ,16 ,18 ]
22
26
```
@@ -889,13 +893,15 @@ ghci> dangerous = \(Just x) -> x
889
893
890
894
## HLintで改善点をある程度自動で見つける
891
895
892
- ```
896
+ ``` bash
897
+ shell> cabal install hlint
898
+ # あるいは...
893
899
shell> stack install hlint
894
900
```
895
901
896
902
ここで紹介していない` TupleSections ` というGHCの拡張を使ったものも(GHCの拡張の話を後回しにしたいので敢えて紹介していません... あしからず)。
897
903
898
- ```
904
+ ``` bash
899
905
shell> hlint assets/16.hs
900
906
assets/16.hs:18:14: Warning: Avoid lambda
901
907
Found:
You can’t perform that action at this time.
0 commit comments