of this questionで説明されているように、Clojureは無体関数(#()
で定義)のパラメータ数を本体で参照される最大パラメータインデックス最大参照パラメータは%4
であり、その無名関数は4つのパラメータを有する)。Clojureの無名関数のためのダミー(未使用)パラメータの宣言
質問:Clojureコンパイラに、匿名関数がそのパラメータを参照しなくても1つのパラメータを必要とすることを伝える構文がありますか?または、この場合、唯一の「クリーンな方法」*はfn syntaxを使用することですか? (*「クリーンな方法」:ほとんどの場合、関数に影響を与えずにダミーパラメータを参照できることを認識しています - 下記を参照してください)。
私の使用例:I (defn foo [predicate])
があります。predicate
には1つの引数が必要ですが、foo
には常にtrue
を返す述語でテストしたいと考えています。 (つまり、#(true)
のようなものです。)これは、#(true)
がゼロ引数を期待していると解釈するので、ArityException
となります。この特定のケースで
、私は#(or true %)
のようないくつかの巧妙なハックを使用することができますが、:
- それはほとんど
fn
-variantとして入力するだけです。 - 一般的な解決策がある場合は興味があります。
編集:
#[1](true) ;; the anonymous function takes one parameter
ではなく、一般的な質問 - のClojure 1.9を使用すると、[ 'どのよう探している述語が含まれますか? '](https://clojure.github.io/clojure/branch-master/clojure.core-api.html#clojure.core/any?)。 – glts