5. Its design is oriented toward concerns of
“programming in the large”, that is,
of creating and maintaining boundaries
– both abstract and operational –
that preserve large-system
integrity, availability and concurrency.
57. 無名関数は作成できない(?)
fn line(a: int, b: int, x: int) -> int{
(fn(a: int, b: int) -> int{
return a + b
})(a * x, b)
}
found `fn` in ident position
58. 関数名の重複(Java の場合)
public static int line(int a, int b, int x){
return a * x + b;
}
public static float line(float a, float b, float x){
return a * x + b;
}
59. 関数名の重複は許されない
fn line(a: int, b: int, x: int) -> int {
a * x + b
}
fn line(a: float, b: float, x: float)
-> float {
a * x + b
}
60. 関数名の重複は許されない
fn line(a: int, b: int, x: int) -> int {
a * x + b
}
fn line(a: float, b: float, x: float)
-> float {
a * x + b
}
duplicate definition of value line
61. 高階関数
fn line(a: int, b: int, x: int, link: &fn(int) -> int) -> int{
a * link(x) + b
}
fn offset(x: int) -> int{
x + 2
}
fn main(){
let a = line(1, 0, 1, offset);
io::println(int::to_str(a));
}