bgnori / broom

golang practice.
1 stars 0 forks source link

Variadic Function/可変長引数をサポートする #7

Closed bgnori closed 10 years ago

bgnori commented 10 years ago

schemeなら (define (foo x y . zs) ~)

clojure なら (defn foo [x y & zs])

とかだっけ?

See Also #14 Multi-Arity Function

bgnori commented 10 years ago

現状formalsが只の配列なのでそれでは辛いかも. & restだけでいいのかな?

bgnori commented 10 years ago

golang は関数を識別するのに引数を見ない. 次のコードはcompileできない.

package main

import (
    "fmt"
)

func Foo(x int) int {
    return x
}

func Foo(x, y string) string {
    return x + y
}

func main(){
    fmt.Println(Foo(1))
}
bgnori commented 10 years ago

7df2c2d4ed8a72f71051c57f24f48c3a49de91ce で一応実装したつもり.

restの扱い. 現状ではArrayになる.

(defn buzz [x y z & rest] 
    rest)
(buzz 1 2 3 4 5) => [4 5]