を通して送信されたときにのClojureののfuncsは、ClojureのREPLでリスト
予想通り
(#(for [x %] (+ 100 (second x))) ['(+ 38) '(+ 48)])
が生成し、この式(138 148)、期待どおりに動作するように見えるが、これ
(#(for [x %] ((first x) 100 (second x))) ['(+ 38) '(+ 48)])
はありません
は本当に奇妙な(38 48)を生成します。
どちらの表現でも同じ結果が得られるはずです。 私は何が欠けていますか? この謎を解決するためのアイデアを感謝します。
ところで、私は 'apply(first x)'を使い、残りのargsをリストにパッケージングしようとしましたが、それは問題ではないようです。同じ予期しない結果が戻ってきます。また
は、+が実際入力から分解されることを確認するために、私はこの+
で
(#'clojure.core/+ #'clojure.core/+) as expected.
+1。問題が本当に引用されているので、データ構造を変更する必要はありません。リストも同様に機能します。リテラルフォームを削除して、たとえば'(list + 38)' – skuro
すべての偉大な答えをありがとう。私が入力として使用していたリストのリストは、partitionを使って生成されたので、この形式の入力そのものを使いたいと思っていました。 私は、この問題を投稿した時点でベクトルに変換しましたが、評価されたfunc(REPLは#^を使って示しています)を生成したことに気づいたが、resolve(first x)の作業は、 (最初のx)呼び出しはエラーを生成するが、そうではなかった。 (get 100 '+ 38)は私のためにこれを解明しました。 – Don