回答編集履歴
5
追記であることを明確に
answer
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
GHCi上で次のように入力すると、自分が作った型を自分が作った型クラスのデフォルトの型にできることがわかるでしょう。
|
7
7
|
|
8
|
-
**注意
|
8
|
+
**追記: ⚠️注意⚠️** @kakkun61 さんの指摘通り、以下のコードは`ExtendedDefaultRules`というGHCの言語拡張を有効にしないと動きません。
|
9
9
|
|
10
10
|
```
|
11
11
|
-- わかりやすさのため、デフォルトの型が
|
4
ExtendedDefaultRulesについて注記
answer
CHANGED
@@ -5,6 +5,8 @@
|
|
5
5
|
|
6
6
|
GHCi上で次のように入力すると、自分が作った型を自分が作った型クラスのデフォルトの型にできることがわかるでしょう。
|
7
7
|
|
8
|
+
**注意:** @kakkun61 さんの指摘通り、以下のコードは`ExtendedDefaultRules`というGHCの言語拡張を有効にしないと動きません。
|
9
|
+
|
8
10
|
```
|
9
11
|
-- わかりやすさのため、デフォルトの型が
|
10
12
|
-- 使用された場合に警告が出るようにする
|
3
細かい表現の修正
answer
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
> Foldable型クラスのデフォルトの型?は[]である事が分かりますが、型クラスのデフォルトの型?の設定・変更を自前ですることは出来ますか?
|
2
2
|
|
3
3
|
`default`という宣言を使用すると、宣言したモジュールの中限定で変更することができます。
|
4
|
-
(ただし、GHC 8.8の場合宣言した型は`‘Num’ or ‘Show’ or ‘Eq’ or ‘Ord’ or ‘Foldable’ or ‘Traversable’`でないといけないそうです)
|
4
|
+
(ただし、GHC 8.8の場合宣言した型は`‘Num’ or ‘Show’ or ‘Eq’ or ‘Ord’ or ‘Foldable’ or ‘Traversable’`のインスタンスでないといけないそうです)
|
5
5
|
|
6
|
-
GHCi上で次のように入力すると、自分が作った型を自分が作った型クラスのデフォルトの型に
|
6
|
+
GHCi上で次のように入力すると、自分が作った型を自分が作った型クラスのデフォルトの型にできることがわかるでしょう。
|
7
7
|
|
8
8
|
```
|
9
9
|
-- わかりやすさのため、デフォルトの型が
|
2
「デフォルトの型に推論された」 => 「デフォルトの型を使用した」に統一。その方が正確なはず。
answer
CHANGED
@@ -6,8 +6,8 @@
|
|
6
6
|
GHCi上で次のように入力すると、自分が作った型を自分が作った型クラスのデフォルトの型にすることができることがわかるでしょう。
|
7
7
|
|
8
8
|
```
|
9
|
-
-- わかりやすさのため、デフォルトの型
|
9
|
+
-- わかりやすさのため、デフォルトの型が
|
10
|
-
--
|
10
|
+
-- 使用された場合に警告が出るようにする
|
11
11
|
> :set -Wtype-defaults
|
12
12
|
|
13
13
|
> data MyDefault = MyDefault deriving Show
|
1
Haskell 2010標準についての話のために少し文がわかりづらくなっていたので修正
answer
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
> Foldable型クラスのデフォルトの型?は[]である事が分かりますが、型クラスのデフォルトの型?の設定・変更を自前ですることは出来ますか?
|
2
2
|
|
3
|
-
|
3
|
+
`default`という宣言を使用すると、宣言したモジュールの中限定で変更することができます。
|
4
4
|
(ただし、GHC 8.8の場合宣言した型は`‘Num’ or ‘Show’ or ‘Eq’ or ‘Ord’ or ‘Foldable’ or ‘Traversable’`でないといけないそうです)
|
5
5
|
|
6
6
|
GHCi上で次のように入力すると、自分が作った型を自分が作った型クラスのデフォルトの型にすることができることがわかるでしょう。
|