Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

assert を core や C++ で利用する #65

Closed
kmyk opened this issue Jul 12, 2021 · 3 comments · Fixed by #160
Closed

assert を core や C++ で利用する #65

kmyk opened this issue Jul 12, 2021 · 3 comments · Fixed by #160

Comments

@kmyk
Copy link
Collaborator

kmyk commented Jul 12, 2021

assert n == len(a) を利用して map(lambda i: a[i], range(n))a に変換するなどしたい
いまは restricted Python → core の変換時に無視してしまってる

@cannorin
Copy link
Member

Refinement Types っぽさがある

@kmyk
Copy link
Collaborator Author

kmyk commented Jul 12, 2021

わかる。
しかし refinement types がうれしいのは「複雑な事前条件/事後条件を型として表現できる」というユーザにとっての表現力のためであってコンパイラにとっての実装しやすさではないはずで、利用は見送りになりそうです。以前に教えてもらったときにやりかけたけど、型と項で相互再帰すると実装がとても面倒だったんですよね。

@cannorin
Copy link
Member

アドホックにやるならとりあえず assert <cond> in <body> みたいな式に変換してあげて,optimizer が式を掘っていくときにそれに出会ったら cond を文脈の assertion 一覧に追加してあげてから body を処理するみたいな実装にすればなんとなく動きそう.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants