| 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.4}} | 8 {\large Version 1.4}} |
| 9 %\author{The Dart Team} | 9 %\author{The Dart Team} |
| 10 \begin{document} | 10 \begin{document} |
| (...skipping 5592 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5603 $(T_1, \ldots, T_n) \rightarrow T <: (T_1, \ldots, T_n, []) \rightarrow T$. | 5603 $(T_1, \ldots, T_n) \rightarrow T <: (T_1, \ldots, T_n, []) \rightarrow T$. |
| 5604 | 5604 |
| 5605 \rationale{ | 5605 \rationale{ |
| 5606 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. | 5606 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. |
| 5607 } | 5607 } |
| 5608 | 5608 |
| 5609 A function type $T$ may be assigned to a function type $S$, written $T \Longlef
trightarrow S$, iff $T <: S$. | 5609 A function type $T$ may be assigned to a function type $S$, written $T \Longlef
trightarrow S$, iff $T <: S$. |
| 5610 | 5610 |
| 5611 % ensure that Object and dynamic may be assign dot a function type | 5611 % ensure that Object and dynamic may be assign dot a function type |
| 5612 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}. | 5612 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}. |
| 5613 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()}. | 5613 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 more specific than $F$.
It is a static warning if a concrete class implements \cd{Function} and does no
t have a concrete method named \CALL{} unless that class declares its own implem
entation of \cd{noSuchMethod()}. |
| 5614 | 5614 |
| 5615 | 5615 |
| 5616 | 5616 |
| 5617 | 5617 |
| 5618 %\commentary{Need to specify how a function values dynamic type is derived from
its static signature.} | 5618 %\commentary{Need to specify how a function values dynamic type is derived from
its static signature.} |
| 5619 | 5619 |
| 5620 A function type $(T_1, \ldots T_{k}, [T_{k+1} \ldots, T_{n+m}]) \rightarrow T$
is a more specific than the | 5620 A function type $(T_1, \ldots T_{k}, [T_{k+1} \ldots, T_{n+m}]) \rightarrow T$
is a more specific than the |
| 5621 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: | 5621 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: |
| 5622 \begin{enumerate} | 5622 \begin{enumerate} |
| 5623 \item Either | 5623 \item Either |
| (...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5936 \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. | 5936 \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. |
| 5937 \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 | 5937 \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 |
| 5938 \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. | 5938 \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. |
| 5939 \item The names of type variables are short (preferably single letter). Examples
: T, S, K, V , E. | 5939 \item The names of type variables are short (preferably single letter). Examples
: T, S, K, V , E. |
| 5940 \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. | 5940 \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. |
| 5941 \end{itemize} | 5941 \end{itemize} |
| 5942 } | 5942 } |
| 5943 | 5943 |
| 5944 | 5944 |
| 5945 \end{document} | 5945 \end{document} |
| OLD | NEW |