回答編集履歴

4

シンタックスハイライトの言語の変更

2020/11/01 00:35

投稿

kakkun61
kakkun61

スコア285

test CHANGED
@@ -50,98 +50,98 @@
50
50
 
51
51
 
52
52
 
53
+ ```lang-Kotlin
54
+
55
+ abstract class Maybe<T>
56
+
57
+ {
58
+
59
+ public sealed class Just (T value) : Maybe<T> {}
60
+
61
+
62
+
63
+ public sealed class Nothing : Maybe<T> {}
64
+
65
+ }
66
+
67
+ ```
68
+
69
+
70
+
71
+ これを先のトレートのインスタンスにしていきます。
72
+
73
+
74
+
53
75
  ```lang-C#
54
76
 
55
- abstract class Maybe<T>
77
+ instance Functor<Maybe<_>>
56
-
78
+
57
- {
79
+ {
80
+
58
-
81
+ Maybe<S> Map<T, S>(Func<T, S> f, Maybe<T> ma) =>
82
+
83
+ ma switch {
84
+
59
- public sealed class Just (T value) : Maybe<T> {}
85
+ Maybe<T>.Just (var a) => new Maybe<S>.Just(f(a)),
60
-
61
-
62
-
86
+
63
- public sealed class Nothing : Maybe<T> {}
87
+ Maybe<T>.Nothing => new Maybe<S>.Nothing()
88
+
64
-
89
+ };
90
+
65
- }
91
+ }
92
+
93
+
94
+
66
-
95
+ instance Applicative<Maybe<_>>
96
+
97
+ {
98
+
99
+ Maybe<S> App<T, S>(Maybe<Func<T, S>> mf, Maybe<T> ma) =>
100
+
101
+ (mf, ma) switch {
102
+
103
+ (Maybe<Func<T, S>>.Just (var f), Maybe<T>.Just (var a)) => new Maybe<S>.Just(f(a)),
104
+
105
+ (Maybe<Func<T, S>>.Nothing, _) => new Maybe<S>.Nothing(),
106
+
107
+ (_, Maybe<T>.Nothing) => new Maybe<S>.Nothing()
108
+
109
+ };
110
+
111
+
112
+
113
+ Maybe<T> Pure<T>(T a) => new Maybe<T>.Just(a);
114
+
115
+ }
116
+
117
+
118
+
119
+ instance Monad<Maybe<_>>
120
+
121
+ {
122
+
123
+ Maybe<S> Bind<T, S>(Maybe<T> ma, Func<T, Maybe<S>> f) =>
124
+
125
+ ma switch {
126
+
127
+ Maybe<T>.Just (var a) => f(a),
128
+
129
+ Maybe<T>.Nothing => Maybe<S>.Nothing
130
+
131
+ };
132
+
133
+ }
134
+
67
- ```
135
+ ```
68
-
69
-
70
-
136
+
137
+
138
+
71
- れを先トレトのインスタンスにしています。
139
+ 使用する場合はこのようなコドを想定しています。
72
140
 
73
141
 
74
142
 
75
143
  ```lang-C#
76
144
 
77
- instance Functor<Maybe<_>>
78
-
79
- {
80
-
81
- Maybe<S> Map<T, S>(Func<T, S> f, Maybe<T> ma) =>
82
-
83
- ma switch {
84
-
85
- Maybe<T>.Just (var a) => new Maybe<S>.Just(f(a)),
86
-
87
- Maybe<T>.Nothing => new Maybe<S>.Nothing()
88
-
89
- };
90
-
91
- }
92
-
93
-
94
-
95
- instance Applicative<Maybe<_>>
96
-
97
- {
98
-
99
- Maybe<S> App<T, S>(Maybe<Func<T, S>> mf, Maybe<T> ma) =>
100
-
101
- (mf, ma) switch {
102
-
103
- (Maybe<Func<T, S>>.Just (var f), Maybe<T>.Just (var a)) => new Maybe<S>.Just(f(a)),
104
-
105
- (Maybe<Func<T, S>>.Nothing, _) => new Maybe<S>.Nothing(),
106
-
107
- (_, Maybe<T>.Nothing) => new Maybe<S>.Nothing()
108
-
109
- };
110
-
111
-
112
-
113
- Maybe<T> Pure<T>(T a) => new Maybe<T>.Just(a);
114
-
115
- }
116
-
117
-
118
-
119
- instance Monad<Maybe<_>>
120
-
121
- {
122
-
123
- Maybe<S> Bind<T, S>(Maybe<T> ma, Func<T, Maybe<S>> f) =>
124
-
125
- ma switch {
126
-
127
- Maybe<T>.Just (var a) => f(a),
128
-
129
- Maybe<T>.Nothing => Maybe<S>.Nothing
130
-
131
- };
132
-
133
- }
134
-
135
- ```
136
-
137
-
138
-
139
- 使用する場合はこのようなコードを想定しています。
140
-
141
-
142
-
143
- ```lang-C#
144
-
145
145
  /// 名前から関数を探す関数
146
146
 
147
147
  /// 見付からなければ Nothing

3

コード修正

2020/11/01 00:35

投稿

kakkun61
kakkun61

スコア285

test CHANGED
@@ -38,7 +38,7 @@
38
38
 
39
39
  {
40
40
 
41
- Maybe<S> Bind<T, S>(F<T> a, Func<T, F<S>> f);
41
+ F<S> Bind<T, S>(F<T> a, Func<T, F<S>> f);
42
42
 
43
43
  }
44
44
 
@@ -80,7 +80,7 @@
80
80
 
81
81
  Maybe<S> Map<T, S>(Func<T, S> f, Maybe<T> ma) =>
82
82
 
83
- a switch {
83
+ ma switch {
84
84
 
85
85
  Maybe<T>.Just (var a) => new Maybe<S>.Just(f(a)),
86
86
 

2

F の具体化忘れ

2019/03/22 00:28

投稿

kakkun61
kakkun61

スコア285

test CHANGED
@@ -110,7 +110,7 @@
110
110
 
111
111
 
112
112
 
113
- F<T> Pure<T>(T a) => new Maybe<T>.Just(a);
113
+ Maybe<T> Pure<T>(T a) => new Maybe<T>.Just(a);
114
114
 
115
115
  }
116
116
 

1

コメント修正

2019/03/21 18:37

投稿

kakkun61
kakkun61

スコア285

test CHANGED
@@ -184,7 +184,7 @@
184
184
 
185
185
  // ユーザーの入力が整数値でなければ Nothing
186
186
 
187
- // それ以外ならば、ユーザーの入力が 10 とすると "-10" という文字列
187
+ // それ以外ならば、ユーザーの入力が 10 とすると "-10" という文字列が Just に包まれたもの
188
188
 
189
189
 
190
190