English | Japanese
Copyright (c) 2011-2012 Yutaka Saito

### 関数の引数 関数の引数には、オプション引数・デフォルト値・可変長引数を指定できます。
    f1(a, b?, c?) = printf('%s, %s, %s\n', a, b, c)
    f1(2)                                # 2, nil, nil

    f2(a, b = 10, c => 'abc') = printf('%s, %s, %s\n', a, b, c)
    f2(2)                                # 2, 10, abc

    f3(a, b, c*) = printf('%s, %s, %s\n', a, b, c):nomap
    f3(2, 3, 4, 5, 6, 7)                 # 2, 3, [4, 5, 6, 7]
    f3(2, 3)                             # 2, 3, []

    f4(a, b, c+) = printf('%s, %s, %s\n', a, b, c):nomap
    f4(2, 3, 4, 5, 6, 7)                 # 2, 3, [4, 5, 6, 7].
    f4(2, 3)                             # error. c has to get at least one value.
関数呼び出しの際は、キーワード引数指定ができます。キーワードと値は、辞書演算子 (=>) で対応づけます。
    g1(a, b, c) = printf('%s, %s, %s\n', a, b, c)
    g1(2, b => 3, c => 4)                # 2, 3, 4
引数リストの中に、% を後尾につけたシンボルを加えておくと、引数リストに合致しないキーワード引数指定の組を辞書にした値をそのシンボルに割り当てます。
    g2(a, b, dict%) = printf('%s, %s, %s\n', a, b, dict)
    g2(2, b => 3, c => 4, d => 5)        # 2, 3, %{c => 4, d => 5}
    g2(2, 3, c => 4, d => 5)             # 2, 3, %{c => 4, d => 5}