Comments (4)
型再構築の意味でもその後の利用の意味でも、依存型っぽくやるよりも篩型っぽくやる方がよいらしい。
z3 などの SMT solver でえいってするとかなんとか。その後の最適化部分はたぶん手動での探索になりそう?
https://7colou.red/blog/2018/07-07-difference/index.html
from jikka.
細かい制約の表現や最適化をしようと思うと refinement types 相当の処理は避けられなさそう。単に静的解析というより自動定理証明よりの大域的な最適化をやろうとしてるのだから、どうやっても型はついてまわるはず。自然に篩型に近付くはずなのでひとまずまだ ad-hoc に進めて、適当なタイミングでリファクタリングという形で篩型を実装する感じでやりたい。
=
とかをいい感じに多相にしたい問題については、Haskell にならって type class をすることになりそう。列多相 row polymorphism も教えてもらったが、今回はこれは違う気がする。
from jikka.
以下の論文を読んで Liquid Types を実装するのが次の課題です
Rondon, Patrick M., Ming Kawaguci, and Ranjit Jhala. "Liquid types." ACM SIGPLAN Notices. Vol. 43. No. 6. ACM, 2008.
from jikka.
まずは最適化部分抜きのもっと小さな処理系を書いて練習します https://github.com/kmyk/liquid-types-example
from jikka.
Related Issues (20)
- Allow str types
- 外側で取った mod がきちんと伝播してくれない
- Support counting strings using regex
- Bostan-Mori
- Multipoint Evaluation
- ∑∑(aᵢ−aⱼ) で WA が出る HOT 3
- modint 型を使う
- builtin 関数をもっと簡単に足せるようにする
- \sum_{i<n} \sum_{j>i} |a_i-a_j| を解けるようにする HOT 1
- Reduce about `product` fucntion HOT 4
- Support SQL
- Use std::set instead of std::vector when it improves time complexity
- Internal Error on `sum(sorted(map(lambda x: x + 1, xs)))` HOT 3
- Allow Python as output
- Language Server Protocol
- Print logs of conversions
- Print suggestions about failed but near-successful rewrite rules
- I don't speak Japanese :'( HOT 4
- Use the same name in generated code when scopes of variables are distinct
- Derive rerooting from a naive tree DP
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from jikka.