私は、純粋な関数型プログラミングの概念に慣れ親しんでいます。どの言語でも便利なことをする前に、いくつかの基本的なデータ構造と、それを効果的に操作する方法、特に列挙可能なデータ構造を理解する必要があります。guileスキームでは、どのようにキーと値のペア(ハッシュマップ)のリストを反復処理できますか?
(map (lambda (v)
(display (string-append v "\n"))
'(1 2 3))
=>
1
2
3
何ハッシュテーブル/ハッシュマップはスキームでのように見えるん:
私はこのようなリストを(私が正しくかどうか、これをインデントしていた場合、私はよく分からない)反復処理することができますか?それを表現するための実際のデータ構造はありますか、それともリストのリストを作ることになりますか?その場合、内側のリストとは別の変数としてキーと値をどうやって取得しますか?
ラムダは一つの値ではなく、2見込んので、明らかにこれは、間違っている:私は何をしようとしているのRubyの同等のようになり
(map (lambda (key value)
(display (string-append key " => " value))
'('("one" 1) '("two" 2) '("three" 3)))
を:
{ "one" => 1, "two" => 2, "three" => 3 }.map do |key, value|
puts "#{key} => #{value}"
end
P.S.関数の戻り値が使用されていないときは、 'map'の代わりに' for-each'を使うべきです。 –
ありがとう、私はループ上のwikiのページからマップを得て、戻り値が無視できるので使用されたと仮定しました:)よく知っておいてください! – d11wtq