CommonLisp-リスト内の他のすべての要素に関数を適用する

lanour

関数(* x 2)をリスト内の他のすべての要素に適用し、ループマクロを使用してリスト全体を返したいと思います私がこれまでに思いついた解決策はこれです:

(defun double-every-other (xs)
  (loop for x in xs by #'cddr collect (* x 2)))

ただし、これは1つおきの要素を倍増し、倍増した要素のみを返すため、次のように実行した場合:

(double-every-other '(1 2 3 4))

結果は次のようになります。

'(4 8)

しかし、私は結果を次のようにしたいと思います。

'(1 4 3 8)

(ループ)を使用してこれを行う方法はありますか?

レンゾ

たとえば、リストのスキャン中に増加する整数をテストできます。

(defun double-every-other (xs)
  (loop for x in xs
     for i from 1
     if (oddp i)
     collect x
     else collect (* x 2)))

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

CommonLispの#ifndef

分類Dev

CommonLispのWebSocket

分類Dev

〜|の意味 CommonLisp形式で

分類Dev

CommonLisp値リスト関数

分類Dev

CommonLispの関数 `tailp`を理解する

分類Dev

EVAL:CommonLISPの未定義関数

分類Dev

CommonLispの関数NCONCについて

分類Dev

CommonLisp-要素を返す関数がリストにn回出現する

分類Dev

CommonLispの変数で関数を定義して使用する

分類Dev

CommonLispの関数のスコープ

分類Dev

CommonLispでの行列乗算

分類Dev

EmacsのCommonLisp Inferior Lisp Buffer

分類Dev

CommonLisp共有構造の混乱

分類Dev

CommonLispとSchemeの共通語彙

分類Dev

CommonLispでの相互再帰

分類Dev

CommonLispで-を+に変更

分類Dev

CommonLispクラス階層

分類Dev

ステップ評価CommonLisp

分類Dev

commonLISPの関数への未定義の参照を取得する

分類Dev

CommonLispで文字列のリストをintのリストに変換する

分類Dev

CommonLispの複数のメタクラス

分類Dev

CommonLispのマクロにリストを渡す

分類Dev

CommonLispで2つのリストを連結する

分類Dev

CommonLispのリストからアイテムを削除する

分類Dev

CommonLispのパラメータとして「適用された関数」を渡す方法

分類Dev

CommonLispのパラメータとして「適用された関数」を渡す方法

分類Dev

CommonLispのネストされたmapcar

分類Dev

CommonLispの最後から2番目のリスト要素を返す

分類Dev

CommonLispで相対パスを取得する