GHC言語拡張勉強会 -Parametric polymorphism- #6
イベント内容
概要
Glasgow Haskell Compiler (以下 GHC) には、様々な言語拡張機能が存在します。
この勉強会では "Glasgow Haskell Compiler User's Guide" (以下 "GHC User's Guide") をベースに、 主に Parametric polymorphism (Rank) に関する言語拡張の理解を深めることを目的としています。
目的
GHC 言語拡張の主に Parametric polymorphism (Rank) に関する拡張 (?) の理解:
ExplicitForAll
LiberalTypeSynonyms
ExistentialQuantification
ScopedTypeVariable
RankNTypes
ImpredicativeTypes
想定する参加者
- Haskell (GHC) のソースコードにおいて
forall ...
というものを見たことがある方 - "GHC User's Guide" の 'GHC Language Features' を読んでいない方
進め方
主に Discord のグループDM (10人まで) の音声通話と画面共有を用いて、"GHC User's Guide" (GHC 8.8.1) の PDF などを管理者が読み進めます。
その他、連絡事項や相談内容があれば、Discordのテキストチャットや connpass のイベント案内にてお伝え致します。
第06回の内容
(注意) ここに掲載している全て (特に、参考の事項) を読み進める訳ではありません
"GHC User's Guide" (以下 GHC 8.8.1 に準拠):
-
'9.21 Arbitrary-rank polymorphism':
RankNTypes
-
参考:
-
'Note [Higher rank types]':
compiler/typecheck/TcValidity.hs
Such types are technically rank 1, but are clearly not Haskell-98 ...
に関連(下記も参照)- issue#5957: 'signatrues are too permissive'
- issue#11540: 'ghc accepts non-standard type without language extension'
-
'Note [Liberal type synonyms]':
compiler/typecheck/TcValidity.hs
-
RankNTypes
を有効にした場合に関する記述あり -
issue#15954: 'LiberalTypeSynonyms unsaturation check doesn't kick in'
8.6.5
と8.8.1
で挙動が異なる
-
-
"Polymorphic Components":
prime.haskell.org/wiki
The obsolete language options PolymorphicComponents and Rank2Types are synonyms for RankNTypes.
-
-
-
-
参考:
-
'1.5. Release notes for version 7.10.1: 1.5.2.1. Language': "GHC 7.10.3 User's Guide"
MySwizzle'
のエラーに関連
-
pull request #216: 'Local do':
ghc-proporsals
Needs revision
data StandardBuilder
がdata MonadT m
(や Linear Haskell) と関係があるとの指摘- 着想は F# の computational expressions
-
-
-
その他の参考:
-
'GHC 8.10.x Migration Guide: GHC is pickier about inferred type signatures':
ghc/ghc-wiki-mirror
RankNTypes
は例示として記述されているだけ- 関連(?): 'Note [Correctness and performance of type synonym validity checking]':
compiler/typecheck/TcValidity.hs
-
- The GHC reading list に掲載されているものの一つ
- いずれ読む可能性あり(?)
-
注意事項
-
内容について
- 主催者は Parametric polymorphism に関する内容に 精通しているわけではありません
- "GHC User's Guide" などにおいて、「目的」欄に記述していない言語拡張に関して言及されていることがあります。その場合は、後にそれらの言語拡張について理解を深める際に振り返ることを予定しているため、その 言語拡張に関しては流し読み します(例:
TypeApplications
,GADTs
,TypeFamiles
)
-
進め方について
- 毎回模範的に準備して進めるつもりはありません。読みながら内容を理解していくというスタンスです。
- 模範的なプランがあり、それに基づいて進行するわけではありません (場当たり的になると思います)
- 切りが良いと判断した場合は、早めに終える ことがあります。 切りが悪いと判断した場合は、切りが良いと判断できるところに到達するまで 延長 することがあります。
日時
-
毎週金曜日 22:00 ~ 23:30
- 2019-10-11 (#1) ~ 2019-12-20 (#10)
-
次回の開催日が翌週ではない場合、改めて連絡します。
年明け
年明け (2020-01-1X ~) は、TypeApplications
に関する内容を読む予定です。
履歴
回数 | 内容 |
---|---|
2019-10-11 | #1: ExplicitForAll , LiberalTypeSynonyms |
2019-10-18 | #2: ExistentialQuantification |
2019-10-25 | #3: ScopedTypeVariables |
2019-11-01 | #4: ScopedTypeVariables |
2019-11-15 | #5: ScopedTypeVariables |
注意事項
※ 掲載タイミングや更新頻度によっては、情報提供元ページの内容と差異が発生しますので予めご了承ください。
※ 最新情報の確認や参加申込手続き、イベントに関するお問い合わせ等は情報提供元ページにてお願いします。