質問編集履歴

10

2017/10/11 18:33

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -52,4 +52,4 @@
52
52
 
53
53
  ```
54
54
 
55
- 例えばこんな感じで、単純に条件式を中で書くしかないですよね?条件式が複数、一つの関数内に出てきてしまうと手続き的になってしまうから好ましくないってだけであって、1つ出てくる分には当たり前??
55
+ 例えばこんな感じで、単純に条件式を中で書くしかないですよね?条件式が複数、一つの関数内に出てきてしまうと手続き的になってしまうから好ましくないってだけであって、1つ出てくる分には当たり前??いや、引数に渡ってきた値によって処理を変えるのをその該当関数で判断させるのは、本来の仕事意外のことも担うことになるから好ましくない???

9

2017/10/11 18:33

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -52,4 +52,4 @@
52
52
 
53
53
  ```
54
54
 
55
- 単純に条件を中で書くしかないですよね?条件が複数、一つの関数内に出てきてしまうと手続き的になってしまうから好ましくないってだけであって、1つ出てくる分には当たり前??
55
+ 例えばこんな感じで、単純に条件を中で書くしかないですよね?条件が複数、一つの関数内に出てきてしまうと手続き的になってしまうから好ましくないってだけであって、1つ出てくる分には当たり前??

8

2017/10/11 18:30

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -43,3 +43,13 @@
43
43
 
44
44
 
45
45
  あと、例えば、10以上じゃない場合はdisplayLogを実行しないみたいなことをするには、どのようにすれば良いのでしょうか?
46
+
47
+
48
+
49
+ ```
50
+
51
+ const displayLog = (value) => { value && console.log(value)};
52
+
53
+ ```
54
+
55
+ 単純に条件文を中で書くしかないですよね?条件文が複数、一つの関数内に出てきてしまうと手続き的になってしまうから好ましくないってだけであって、1つ出てくる分には当たり前??

7

s

2017/10/11 18:29

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  ```JavaScript
2
2
 
3
- const sum = (list) => list.reduce((accumulator, item) => { return accumulator + item}, 0);
3
+ const sum = (list) => list.reduce((accumulator, item) => { return accumulator + item }, 0);
4
4
 
5
5
 
6
6
 
@@ -12,7 +12,7 @@
12
12
 
13
13
 
14
14
 
15
- const displayLog = (value) => { console.log(value)};
15
+ const displayLog = (value) => { console.log(value) };
16
16
 
17
17
 
18
18
 

6

2017/10/11 18:23

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -28,7 +28,7 @@
28
28
 
29
29
 
30
30
 
31
- カーリー化や関数合成が本を読んだだけでは身につかなさすぎるので、コードを実際に書いてみようと思って書いてみたのですが、関数型プログラミングっぽくなってますでしょうか?コード自体は動作確認済みなので動きますが。
31
+ カーリー化や関数合成が本を読んだだけでは身につかなさすぎるので、コードを実際に書いてみようと思って書いてみたのですが、関数型プログラミングっぽくなってますでしょうか?コード自体は動作確認済みなので動きますが。(単なる練習で書いたので実用的では全くないです。。。)
32
32
 
33
33
 
34
34
 

5

2017/10/11 18:22

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -20,13 +20,15 @@
20
20
 
21
21
 
22
22
 
23
+ // trueが期待通りに出力されます。動作確認済み。
24
+
23
25
  compose(displayLog, isLargerThan(10), sum, multiplyBy(10))([1, 2, 3, 4, 5]);
24
26
 
25
27
  ```
26
28
 
27
29
 
28
30
 
29
- カーリー化や関数合成が本を読んだだけでは身につかなさすぎるので、コードを実際に書いてみようと思って書いてみたのですが、関数型プログラミングっぽくなってますでしょうか?
31
+ カーリー化や関数合成が本を読んだだけでは身につかなさすぎるので、コードを実際に書いてみようと思って書いてみたのですが、関数型プログラミングっぽくなってますでしょうか?コード自体は動作確認済みなので動きますが。
30
32
 
31
33
 
32
34
 

4

2017/10/11 18:12

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -37,3 +37,7 @@
37
37
  ```
38
38
 
39
39
  特に、この行の関数で他の関数の結果をラップしまくってるところとか、こんなことするんでしたっけ?
40
+
41
+
42
+
43
+ あと、例えば、10以上じゃない場合はdisplayLogを実行しないみたいなことをするには、どのようにすれば良いのでしょうか?

3

const compose = (log, compare, sum, multiplyBy) => (list) => log(compare(sum(multiplyBy(list))));

2017/10/11 18:10

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -32,7 +32,7 @@
32
32
 
33
33
  ```
34
34
 
35
- const compose = (log, compare, sum, multiply) => (list) => log(compare(sum(multiply(list, 2))));
35
+ const compose = (log, compare, sum, multiplyBy) => (list) => log(compare(sum(multiplyBy(list))));
36
36
 
37
37
  ```
38
38
 

2

a

2017/10/11 18:07

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -2,11 +2,9 @@
2
2
 
3
3
  const sum = (list) => list.reduce((accumulator, item) => { return accumulator + item}, 0);
4
4
 
5
- const multiply = (list, byHowMuch) => list.map((item) => item * byHowMuch);
6
5
 
7
6
 
8
-
9
- const compose = (log, compare, sum, multiply) => (list) => log(compare(sum(multiply(list, 2))));
7
+ const multiplyBy = (byHowMuch) => (list) => list.map((item) => item * byHowMuch);
10
8
 
11
9
 
12
10
 
@@ -18,7 +16,11 @@
18
16
 
19
17
 
20
18
 
19
+ const compose = (log, compare, sum, multiplyBy) => (list) => log(compare(sum(multiplyBy(list))));
20
+
21
+
22
+
21
- compose(displayLog, isLargerThan(10), sum, multiply)([1, 2, 3, 4, 5]);
23
+ compose(displayLog, isLargerThan(10), sum, multiplyBy(10))([1, 2, 3, 4, 5]);
22
24
 
23
25
  ```
24
26
 

1

isLargerThan(10)

2017/10/11 18:06

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -12,15 +12,13 @@
12
12
 
13
13
  const isLargerThan = (value) => (comparedValue) => comparedValue > value;
14
14
 
15
- const isLargerThan10 = isLargerThan(10)
16
-
17
15
 
18
16
 
19
17
  const displayLog = (value) => { console.log(value)};
20
18
 
21
19
 
22
20
 
23
- compose(displayLog, isLargerThan10, sum, multiply)([1, 2, 3, 4, 5]);
21
+ compose(displayLog, isLargerThan(10), sum, multiply)([1, 2, 3, 4, 5]);
24
22
 
25
23
  ```
26
24