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 |