0

私はClojureを学んでいるPythonプログラマーです。Pythonでは、functools.partialの呼び出しで名前付き引数を使用する方法が大好きです。

def pow(base, exponent):
    return base ** exponent

exp = partial(pow, 2.71828)           # exp(2) --> 7.3886
square = partial(pow, exponent=2)     # square(2) --> 4

の実装はexpClojureでも明らかに同等ですが、簡潔partialに定義するためにも使用できますか?square特定の引数が事前に決定されるように、キーワード/名前付き引数をpartialに渡す方法はありますか?または、これはpartial関数リテラルではなく、関数リテラルで処理する必要があり#(pow % 2)ますか?

4

1 に答える 1

1

既存の関数の場合、キーワードベースの引数を使用せず、位置引数を使用するため、関数リテラルを使用する必要があります。

あなた自身の機能のために、あなたは同様のことをすることができます:

(defn my-pow [& {:keys [base exponent]}]
  (Math/pow base exponent))

(def exp (partial my-pow :base 2.71828))
(exp :exponent 2)
(def square (partial my-pow :exponent 2))
(square :base 2)
于 2013-03-26T10:12:50.877 に答える