OLD | NEW |
1 \documentclass{article} | 1 \documentclass{article} |
2 \usepackage{epsfig} | 2 \usepackage{epsfig} |
3 \usepackage{dart} | 3 \usepackage{dart} |
4 \usepackage{bnf} | 4 \usepackage{bnf} |
5 \usepackage{hyperref} | 5 \usepackage{hyperref} |
6 \newcommand{\code}[1]{{\sf #1}} | 6 \newcommand{\code}[1]{{\sf #1}} |
7 \title{Dart Programming Language Specification \\ | 7 \title{Dart Programming Language Specification \\ |
8 {\large Version 1.1}} | 8 {\large Version 1.1}} |
9 \author{The Dart Team} | 9 \author{The Dart Team} |
10 \begin{document} | 10 \begin{document} |
(...skipping 5482 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5493 $(T_1, \ldots, T_n) \rightarrow T <: (T_1, \ldots, T_n, []) \rightarrow T$. | 5493 $(T_1, \ldots, T_n) \rightarrow T <: (T_1, \ldots, T_n, []) \rightarrow T$. |
5494 | 5494 |
5495 \rationale{ | 5495 \rationale{ |
5496 The naive reader might conclude that, since it is not legal to declare a functio
n with an empty optional parameter list, these rules are pointless. However, the
y induce useful relationships between function types that declare no optional p
arameters and those that do. | 5496 The naive reader might conclude that, since it is not legal to declare a functio
n with an empty optional parameter list, these rules are pointless. However, the
y induce useful relationships between function types that declare no optional p
arameters and those that do. |
5497 } | 5497 } |
5498 | 5498 |
5499 A function type $T$ may be assigned to a function type $S$, written $T \Longlef
trightarrow S$, iff $T <: S$. | 5499 A function type $T$ may be assigned to a function type $S$, written $T \Longlef
trightarrow S$, iff $T <: S$. |
5500 | 5500 |
5501 % ensure that Object and dynamic may be assign dot a function type | 5501 % ensure that Object and dynamic may be assign dot a function type |
5502 A function is always an instance of some class that implements the class \code{F
unction} and implements a \CALL{} method with the same signature as the function
. All function types are subtypes of \code{Function}. | 5502 A function is always an instance of some class that implements the class \code{F
unction} and implements a \CALL{} method with the same signature as the function
. All function types are subtypes of \code{Function}. |
5503 If a type $I$ includes an instance method named \CALL{}, and the type of \CALL{}
is the function type $F$, then $I$ is considered to be a subtype of $F$. It is
a static warning if a concrete class implements \cd{Function} and does not have
a concrete method named \CALL{}. | 5503 If a type $I$ includes an instance method named \CALL{}, and the type of \CALL{}
is the function type $F$, then $I$ is considered to be a subtype of $F$. It is
a static warning if a concrete class implements \cd{Function} and does not have
a concrete method named \CALL{} unless that class declares its own implementati
on of \cd{noSuchMethod()}. |
5504 | 5504 |
5505 | 5505 |
5506 | 5506 |
5507 | 5507 |
5508 %\commentary{Need to specify how a function values dynamic type is derived from
its static signature.} | 5508 %\commentary{Need to specify how a function values dynamic type is derived from
its static signature.} |
5509 | 5509 |
5510 A function type $(T_1, \ldots T_{k}, [T_{k+1} \ldots, T_{n+m}]) \rightarrow T$
is a more specific than the | 5510 A function type $(T_1, \ldots T_{k}, [T_{k+1} \ldots, T_{n+m}]) \rightarrow T$
is a more specific than the |
5511 function type $(S_1, \ldots, S_{k+j}, [S_{k+j+1} \ldots, S_{n}]) \rightarrow S$,
if all of the following conditions are met: | 5511 function type $(S_1, \ldots, S_{k+j}, [S_{k+j+1} \ldots, S_{n}]) \rightarrow S$,
if all of the following conditions are met: |
5512 \begin{enumerate} | 5512 \begin{enumerate} |
5513 \item Either | 5513 \item Either |
(...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5824 \item The names of compile time constant variables never use lower case letters.
If they consist of multiple words, those words are separated by underscores. Ex
amples: PI, I\_AM\_A\_CONSTANT. | 5824 \item The names of compile time constant variables never use lower case letters.
If they consist of multiple words, those words are separated by underscores. Ex
amples: PI, I\_AM\_A\_CONSTANT. |
5825 \item The names of functions (including getters, setters, methods and local or l
ibrary functions) and non-constant variables begin with a lowercase letter. If t
he name consists of multiple words, each word (except the first) begins with an
uppercase letter. No other uppercase letters are used. Examples: camlCase, dar
t4TheWorld | 5825 \item The names of functions (including getters, setters, methods and local or l
ibrary functions) and non-constant variables begin with a lowercase letter. If t
he name consists of multiple words, each word (except the first) begins with an
uppercase letter. No other uppercase letters are used. Examples: camlCase, dar
t4TheWorld |
5826 \item The names of types (including classes and type aliases) begin with an uppe
r case letter. If the name consists of multiple words, each word begins with
an uppercase letter. No other uppercase letters are used. Examples: CamlCase, D
art4TheWorld. | 5826 \item The names of types (including classes and type aliases) begin with an uppe
r case letter. If the name consists of multiple words, each word begins with
an uppercase letter. No other uppercase letters are used. Examples: CamlCase, D
art4TheWorld. |
5827 \item The names of type variables are short (preferably single letter). Examples
: T, S, K, V , E. | 5827 \item The names of type variables are short (preferably single letter). Examples
: T, S, K, V , E. |
5828 \item The names of libraries or library prefixes never use upper case letters. I
f they consist of multiple words, those words are separated by underscores. Exam
ple: my\_favorite\_library. | 5828 \item The names of libraries or library prefixes never use upper case letters. I
f they consist of multiple words, those words are separated by underscores. Exam
ple: my\_favorite\_library. |
5829 \end{itemize} | 5829 \end{itemize} |
5830 } | 5830 } |
5831 | 5831 |
5832 | 5832 |
5833 \end{document} | 5833 \end{document} |
OLD | NEW |