Skip to content

Commit d2453b1

Browse files
committed
Introduce GHC's language extensions
1 parent dfef39d commit d2453b1

File tree

1 file changed

+10
-11
lines changed

1 file changed

+10
-11
lines changed

assets/19.md

+10-11
Original file line numberDiff line numberDiff line change
@@ -104,37 +104,36 @@ instance Monad IO -- Defined in ‘GHC.Base’
104104

105105
##### GHCの言語拡張`TypeApplications`で、分かりやすく見てみる
106106

107-
`Monad`のことを一旦忘れるために便利なGHCの言語拡張を有効にする
107+
`>>`は`Monad`型クラスのインスタンス全般に対して使える関数で`IO`型も`Monad`型クラスのインスタンスなので`>>`が使えることはここまででお伝えしたとおりですとは言ったものの`>>`のことをよりよく理解する上で`Monad m => m a -> m b -> m b`という型は少々抽象的で分かりづらく感じられるかも知れませんそこで`TypeApplications`というGHCの言語拡張を使うことで`IO`専用の`>>`を作ってみましょう`Monad`のことを意識しなくて良い分より分かりやすくなるはずです
108108

109109
###### そもそも言語拡張とは?
110110

111-
現行のHaskellの仕様[Haskell 2010][1]に書かれている仕様でサポートされていない実験的な機能
112-
通常下記のような特別な形式のコメントを`.hs`ファイルの先頭に書くことでそのファイルの中のみで指定した言語拡張下記の例は`TypeApplications`を有効にすることができます
111+
GHCの言語拡張とは何でしょうかGHCが提供する現行のHaskellの仕様[Haskell 2010][1]ではサポートされていない実験的な機能です通常下記のような特別な形式のコメントを`.hs`ファイルにおける一番最初の箇所に書くことでそのファイルの中でのみ指定した言語拡張下記の例は`TypeApplications`を有効にして使います:
113112

114113
[1]: https://www.haskell.org/onlinereport/haskell2010/
115114

116-
```
115+
```haskell
117116
{-# LANGUAGE TypeApplications #-}
118117
```
119118

120-
あるいは、GHCiで言語拡張を有効にしたい場合、↓のように書くと、`TypeApplications`を有効にすることができる
119+
あるいは、GHCiで言語拡張を有効にしたい場合、↓のように書くことで`TypeApplications`を有効にできます
121120

122-
```
121+
```haskell
123122
ghci> :set -XTypeApplications
124123
```
125124

126-
`-XTypeApplications`とあるとおり、`-X`と`TypeApplications`の間にスペースがない点に注意
127-
スペースを書くとエラーになる。
125+
`-XTypeApplications`とあるとおり、`-X``TypeApplications`の間にスペースがない点にご注意ください。スペースを書くとエラーになってしまいます:
128126

129-
```
127+
```haskell
130128
ghci> :set -X TypeApplications
131129
Some flags have not been recognized: -X, TypeApplications
132130
```
133131

134-
GHCiを起動している間に言語拡張を無効にしたくなったら、下記のように書く。
132+
GHCiを起動している間に言語拡張を**無効**にしたくなった場合、下記のように書きます:
135133

136-
```
134+
```haskell
137135
ghci> :set -XNoTypeApplications
136+
-- もちろん例は TypeApplications ですが、他の言語拡張も同様です
138137
```
139138

140139
###### `TypeApplications`を使う

0 commit comments

Comments
 (0)