回答編集履歴

2

追加の質問への回答

2021/07/26 05:12

投稿

kakkun61
kakkun61

スコア285

test CHANGED
@@ -61,3 +61,43 @@
61
61
 
62
62
 
63
63
  rank-N types を使用する方法もありますが発展的な内容なので省略します。
64
+
65
+
66
+
67
+ ----
68
+
69
+
70
+
71
+ > 出力のIntItem、StringItemといった文字を消すことは出来ますでしょうか?
72
+
73
+
74
+
75
+ 自前の文字列化関数を用意します。
76
+
77
+
78
+
79
+ ```haskell
80
+
81
+ toString :: Item -> String
82
+
83
+ toString (IntItem n) = show n
84
+
85
+ toString (StringItem s) = s
86
+
87
+ ```
88
+
89
+
90
+
91
+ これを使用すると次のように書けます。
92
+
93
+
94
+
95
+ ```haskell
96
+
97
+ main = do
98
+
99
+ putStrLn $ toString $ IntItem 1
100
+
101
+ putStrLn $ toString $ StringItem "a"
102
+
103
+ ```

1

誤解をまねかないように

2021/07/26 05:12

投稿

kakkun61
kakkun61

スコア285

test CHANGED
@@ -1,4 +1,4 @@
1
- `[String] -> a` という型は、その関数のどの部分が実行されても単一の `a` という型の返り値になる必要があります。
1
+ `[String] -> a` という型は、その関数のどの部分が実行されても単一の `a` という型の返り値になる必要があります。
2
2
 
3
3
  つまり下記のコードの (1) の部分と (2) の部分が同じ型であることを要求します。
4
4