2016-05-14 1 views
1

それはスキームにおける基本的な質問でなければなりませんが、私は(E1 E2 E3)(スキーム)

O_Oそれを行う方法を見ることができない私は(リストを持っていますe1 e2 e3)および関数mを含む。 私が望むのは、マップのみを使って、そして/または適用すると、mNが(m eN)であるリスト(m1 m2 m3)を得ることです。

私の関数mはunaryではありません(最初のargと2番目のargとしてリストを取ります。この数はリストに適用されます)、applyを使って2番目の引数を渡す方法はわかりませんマップ。

どうすればいいですか?このコンクリートを作るために

+4

は、たぶん私は何かを誤解していますが、あなただけ記述されていません''(map m list-of-es)は何をしますか? – jkiiski

+0

実際にはomethingと言って忘れました:私の関数mは単項式ではありません(最初の引数としてリストをとり、2番目の引数として数を取ります。この数はリストに当てはまります) applyまたはmapを使用した引数。 –

+0

'map'は複数のリストを取ることもできます。その場合、関数は各リストから1つの要素で呼び出されます:'(map + '(5 3 1)'(8 5 3))=>(13 8 4) '。 – jkiiski

答えて

1

あなたの質問は非常に明確ではありませんが、あなたの関数の第二引数は、アプリケーションのコンテキスト内で一定でなければならないようだ。

(define lst '(1 2 3)) 
(define elst '(2 0 1)) 
(map (lambda (x) (list-ref lst x)) elst) 
+0

私が探していたことがありがとう! –

3

は、のは、メートル(m 3) -3と評価、例えばので

(define (m n) (- n)) 

、整数を否定関数であると仮定する。リスト(-1 2 -3)と評価されます

(map m '(1 -2 3)) 

:次に、このようなリスト(1 -2 3)の各要素にメートルを適用することができます。これは実際にはhttp://ideone.com/Le7PHCにあります。

EDIT:コメントでは、元のポスターは、彼の機能メートルは単項、バイナリではないと言います。私はちょっと混乱していますが、もう一度試してみましょう。

最初の引数として整数のリストをとり、2番目の引数として整数をとり、最初のリストの各要素が2番目の引数の分だけインクリメントされた新しいリストを返すとしましょう。したがって、関数はリスト(1 3 5)と整数7をとり、リスト(8 10 12)を返します。この機能は:

(define (f xs n) 
    (map (lambda (x) (+ x n)) 
     xs)) 

http://ideone.com/KmcSefで見ることができます。

これがあなたの質問に答えることを願っています。そうでない場合は、具体的な入力と出力を含め、あなたがしようとしているもののより具体的な例を挙げてください。

+0

私はこれを完全に理解していますが、私は何かを忘れてしまったと思います、残念ですx)私の関数mは単項式ではありません。それは2つの引数を取る:私はいくつかの番号を適用したいリスト(番号は2番目の引数です) –