|
| 1 | +======================================== |
| 2 | +Gradual Typing |
| 3 | +======================================== |
| 4 | + |
| 5 | + |
| 6 | +.. contents:: 目錄 |
| 7 | + |
| 8 | + |
| 9 | +介紹 |
| 10 | +======================================== |
| 11 | + |
| 12 | +Gradual Typing 為混合 Static Typing 和 Dynamic Typing 所形成的型別系統, |
| 13 | +部份變數會在編譯時期知道型別並檢查型別的正確性, |
| 14 | +部份變數則會保持不知道型別的狀態, |
| 15 | +直到執行時期才撿查型別錯誤。 |
| 16 | +在許多實際案例上,Gradual Typing 為在原本的動態語言上加入靜態型別的選擇而成, |
| 17 | +在某些案例上則是語言在一開始的設計就選擇了 Gradual Typing。 |
| 18 | + |
| 19 | + |
| 20 | + |
| 21 | +範例 |
| 22 | +======================================== |
| 23 | + |
| 24 | +Dynamically Typed -> Gradually Typed |
| 25 | + |
| 26 | +* TypeScript (改自 JavaScript) |
| 27 | +* Hack (改自 PHP) |
| 28 | +* Typed Racket (改自 Racket) |
| 29 | +* Typed Clojure (改自 Clojure) |
| 30 | +* Cython (改自 Python) |
| 31 | + |
| 32 | + |
| 33 | +Statically Typed -> Gradually Typed |
| 34 | + |
| 35 | +* C# |
| 36 | + |
| 37 | + |
| 38 | +Others |
| 39 | + |
| 40 | +* Dart |
| 41 | +* Dylan |
| 42 | +* Perl 6 |
| 43 | + |
| 44 | + |
| 45 | + |
| 46 | +參考 |
| 47 | +======================================== |
| 48 | + |
| 49 | +* `Wikipedia - Gradual typing <https://en.wikipedia.org/wiki/Gradual_typing>`_ |
| 50 | +* `ECOOP 2016 - Gradual Type Systems <http://2016.ecoop.org/event/summer-school-gradual-type-system>`_ |
| 51 | +* `ECOOP 2016 - 28 Years of Types for Untyped Languages: A Random Walk Thru TypeLand <http://2016.ecoop.org/event/summer-school-gradual-typing>`_ |
| 52 | +* `POPL 2016 Papers <https://github.com/gasche/popl2016-papers>`_ |
| 53 | +* `Lambda the Ultimate - Progress on Gradual Typing <http://lambda-the-ultimate.org/node/5292>`_ |
| 54 | +* `A bibliography on Gradual Typing <https://github.com/samth/gradual-typing-bib>`_ |
| 55 | +* [2015] `Towards Practical Gradual Typing <http://www.ccs.neu.edu/racket/pubs/ecoop2015-takikawa-et-al.pdf>`_ |
| 56 | +* `What is Gradual Typing <http://homes.soic.indiana.edu/jsiek/what-is-gradual-typing/>`_ |
| 57 | + |
| 58 | + |
| 59 | +Python |
| 60 | + |
| 61 | +* `PEP 483 -- The Theory of Type Hints <https://www.python.org/dev/peps/pep-0483/>`_ |
| 62 | +* `Reticulated Python - Types for Python <https://github.com/mvitousek/reticulated>`_ |
0 commit comments