クロージャでこれをどのように評価するか。クロージャでの評価
私はあなたが何をしようとしていると、なぜあなたは、この関数のxml-EVALを命名しているかを正確にはわからない
(xml-eval '(item (itemname "some item") (price (% * 19.95 1.08))))
が
(xml-eval '(item (itemname "some item") (price 21.54))
クロージャでこれをどのように評価するか。クロージャでの評価
私はあなたが何をしようとしていると、なぜあなたは、この関数のxml-EVALを命名しているかを正確にはわからない
(xml-eval '(item (itemname "some item") (price (% * 19.95 1.08))))
が
(xml-eval '(item (itemname "some item") (price 21.54))
に評価されたいです。
しかし、ネストされたリストの束を取り、それらが含むコードの結果によって%で始まるものを置き換える関数が必要になると思われます。だからこのようなものを使用したいかもしれません:
(defn xml-eval [x]
(if (coll? x)
(if (= (first x) '%)
(eval (rest x))
(map xml-eval x))
x))
それはあなたが欲しいと思うようです。
user=> (xml-eval '(item (itemname "some item") (price (% * 19.95 1.08))))
(item (itemname "some item") (price 21.546))
しかし、あなたはまた、unquoting
user=> `(item (itemname "some item") (price ~(* 19.95 1.08)))
(user/item (user/itemname "some item") (user/price 21.546))
どこから彼はxml-evalを取得しますか? – octopusgrabbus
リストアイテムを(price(expression))としてXMLスタイルリストをとるxml-evalを定義したいと思います。その表現が評価されることを期待しています。 – riship89
@alexadre:解決策をありがとう、clojure REPLで動作します。私はxml-evalを定義するためにそれをさらに進めたいと思います。手伝ってくれる。 – riship89
に見てみたいことがありますXML-evalの項目とitemNameにのためのDEFSは何ですか?私はこれを使って遊んでみたいですが、コードスニペットのコンテキストはありません。詳細を追加できますか? – octopusgrabbus
clujureはscheme/racketのような評価をしています。 1行目を実行して2行目を返すようにしたい。 – riship89
はい、evalはありますが、xml-evalはありません。私はevalでreplでそれを実行しようとしましたが、それはitemを悩ませます。 – octopusgrabbus