Semantic
GitHub製
Haskell実装
github
Why Haskell ?
Haskellは言語ではなくデータ構造によってコントロールフローが決定される
同じ構文でも、並列計算だったり、ブロック構文だったり、非決定手計算だったりする
「コントロールフロー」って何を指している #??
これはGoやJavaのような言語では不可能
どこに使用しているかと言うと、resumable exceptions
「resumable exceptions」ってなに #??
Semanticはインタプリタ的なものなので、構文として誤っているものもの解釈できないといけない
強力な型付けのおかげでランタイムでクラッシュしないため
研究のため
Oleg Kiselyov
higher-order effects
Extensible Effects
その他
遅延評価への対策としてStrictData
diffのやつは最初はSwiftで実装されていたが扱いにくくなったのでHaskellにした
そもそも何するもの?
https://github.com/github/semantic
tree-sitterを使っている
http://tree-sitter.github.io/tree-sitter/
https://github.com/github/semantic/blob/df03b302fa7e2408e93ba923a54a9f05a8520d52/docs/codegen.md
https://github.blog/2017-07-26-quickly-review-changed-methods-and-functions-in-your-pull-requests/
https://github.blog/2020-08-04-codegen-semantics-improved-language-support-system/
https://github.blog/2020-08-25-upgrading-github-to-ruby-2-7/
tech blog, repositoryの中の他ファイルなど