回答編集履歴

4

見易さの改善

2019/10/19 06:08

投稿

DangerousWayTo
DangerousWayTo

スコア5

test CHANGED
@@ -14,15 +14,21 @@
14
14
 
15
15
 
16
16
 
17
- typedef int(*t_add)(void*,int);
17
+ #define F(f,p,x)p->f(p,x)
18
18
 
19
+
20
+
21
+ typedef int T;
22
+
23
+ typedef T(*t_add)(void*,T);
24
+
19
- typedef t_add(*t__add)(void*,int);
25
+ typedef t_add(*t__add)(void*,T);
20
26
 
21
27
 
22
28
 
23
29
  typedef struct part{
24
30
 
25
- int X;
31
+ T X;
26
32
 
27
33
  t_add _add;
28
34
 
@@ -32,13 +38,13 @@
32
38
 
33
39
 
34
40
 
35
- int _add(Part p,int y){
41
+ T _add(Part p,T y){
36
42
 
37
43
  return p->X+y;
38
44
 
39
45
  }
40
46
 
41
- t_add add(Part p,int x){
47
+ t_add add(Part p,T x){
42
48
 
43
49
  p->X=x;
44
50
 
@@ -72,15 +78,21 @@
72
78
 
73
79
 
74
80
 
75
- t_add p1=part1->add(part1,10);
81
+ t_add p1=F(add,part1,10);
76
82
 
77
- t_add p2=part2->add(part2,100);
83
+ #define P1(x)p1(part1,x)
78
84
 
79
85
 
80
86
 
81
- printf("%d\n",p1(part1,1000));
87
+ t_add p2=F(add,part2,100);
82
88
 
89
+ #define P2(x)p2(part2,x)
90
+
91
+
92
+
93
+ printf("%d\n",P1(1000));
94
+
83
- printf("%d\n",p2(part2,10000));
95
+ printf("%d\n",P2(10000));
84
96
 
85
97
 
86
98
 

3

誤字の訂正

2019/10/19 06:08

投稿

DangerousWayTo
DangerousWayTo

スコア5

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  C言語では出来ないものかも考えてみました。
4
4
 
5
- カリー化は無理のようですが、部分関数のような感じには、出来るようです。
5
+ カリー化は無理のようですが、部分適用のような感じには、出来るようです。
6
6
 
7
7
 
8
8
 

2

C++の文法にも対応した。

2019/10/12 13:13

投稿

DangerousWayTo
DangerousWayTo

スコア5

test CHANGED
@@ -8,17 +8,15 @@
8
8
 
9
9
  ```C
10
10
 
11
-
12
-
13
11
  #include<stdlib.h>
14
12
 
15
13
  #include<stdio.h>
16
14
 
17
15
 
18
16
 
19
- typedef int(*t_add)();
17
+ typedef int(*t_add)(void*,int);
20
18
 
21
- typedef t_add(*t__add)();
19
+ typedef t_add(*t__add)(void*,int);
22
20
 
23
21
 
24
22
 
@@ -44,7 +42,7 @@
44
42
 
45
43
  p->X=x;
46
44
 
47
- return _add;
45
+ return(t_add)_add;
48
46
 
49
47
  }
50
48
 
@@ -52,11 +50,11 @@
52
50
 
53
51
  Part new_Part(){
54
52
 
55
- Part p=malloc(sizeof(struct part));
53
+ Part p=(Part)malloc(sizeof(struct part));
56
54
 
57
- p->_add=_add;
55
+ p->_add=(t_add)_add;
58
56
 
59
- p->add=add;
57
+ p->add=(t__add)add;
60
58
 
61
59
  return p;
62
60
 

1

C言語による試み

2019/10/07 02:39

投稿

DangerousWayTo
DangerousWayTo

スコア5

test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- ```C言語
9
+ ```C
10
10
 
11
11
 
12
12