[解決済み】schemeのmapとapplyの違いは何ですか?
質問
Schemeを学ぼうとしているのですが、次のような違いがよくわかりません。 {コード と {コード .
私の理解では
map
はリストの各要素に関数を適用し
apply
は、プロシージャの引数に何かを適用します。
この2つは同じように使うことができますか?
どのように解決するのですか?
同じではない!?この2つの名前を覚えておくと便利です。
{コード は引数として1つの手続きと1つ以上のリストを取ります。 手続きはリストの各位置に対して、その位置の要素のリストを引数として一度だけ呼ばれます。
map
{{コード
という
apply
,
{コード
,
{コード
を使ってリストを構築します。
map
{{コード
という
(map - '(2 3 4))
; => (-2 -3 -4)
{コード
{{コード
をクリックしてリストを構築してください。
map
{{コード
という
(- 2)
{コード
{{コード
をクリックしてリストを構築してください。
(- 3)
は、(リストの)値の集合に対して「マップ」(関数)を実装しているため、このような名前になっています。
(- 4)
{{コード がかかります。 少なくとも2 引数のうち、最初の引数は手続き、最後の引数はリストです。これは、リストの中のものも含めて、次の引数で手続きを呼び出します。
(map + '( 1 2 3)
'(10 20 30))
; => (11 22 33)
と同じです。
map
(+ 1 10)
と同じです。
(+ 2 20)
.
(+ 3 30)
は、引数をリストで持っている場合に便利です。
(map * '(2 2 -1)
'(0 3 4)
'(5 4 2))
; => (0 24 -8)
を使わずに最後の行を書き直そうとした場合。
map
ということは、各要素の合計を計算するために、リスト上でループする必要があることに気づくでしょう。
(* 2 0 5)
は、これら2つ以上の引数で使用することもできます。最初の引数は呼び出し可能なオブジェクト(手続きまたは継続)でなければなりません。最後の引数はリストでなければなりません。その他(最初と最後の間)は、任意の型のオブジェクトです。ですから、呼び出しは
(* 2 3 4)
を呼び出すのと同じです。
(* -1 4 2)
具体的な例を挙げてみましょう。
map
と同じです。
(map - '(2 3 4))
arguments mapping "-" result
2 === (- 2) ===> -2
3 === (- 3) ===> -3
4 === (- 4) ===> -4
(map + '( 1 2 3)
'(10 20 30))
arguments mapping "+" result
1 10 === (+ 1 10) ===> 11
2 20 === (+ 2 20) ===> 22
3 30 === (+ 3 30) ===> 33
apply
は、複数の引数に対して手続きを「適用」することができるため、このような名前になっています。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン