[解決済み] Clojure CoreやContribでZip関数に相当するものはありますか?
質問
Clojureで、2つのリストを組み合わせてペアのリストを作りたい。
> (zip '(1 2 3) '(4 5 6))
((1 4) (2 5) (3 6))
HaskellやRubyでは、この関数は zip . 実装は難しくありませんが、CoreやContribで関数が欠落していないことを確認したかったのです。
があります。 zip の名前空間がありますが、Core では に記述されています。 は Zipper の機能的なテクニックへのアクセスを提供すると説明されていますが、これは私が求めているものではなさそうです。
この方法で、2つ以上のリストを結合するための同等の機能は Core にありますか?
ない場合、その関数が不要になる慣用的なアプローチがあるからでしょうか?
どのように解決するのですか?
(map vector '(1 2 3) '(4 5 6))
は思い通りになります。
=> ([1 4] [2 5] [3 6])
Haskell は
zipWith
(
zipWith3
,
zipWith4
,...) 関数で、これらはすべて特定の
型
特に、それらが受け入れる入力リストの数は固定されている必要があります。(そのため
zip
,
zip2
,
zip3
の特殊化と見なすことができます。
zipWith
ファミリーを特殊化したものとみなすことができます(タプリングの一般的な使用例)。
一方、Clojureや他のLispsは可変アリティの関数をうまくサポートしています。
map
はその一つで、Haskellのように"tupling"に使用することができます。
zipWith (\x y -> (x, y))
Clojureで"tuple"を構築する慣用的な方法は、上に表示されているように、短いベクトルを構築することです。
(念のため、いくつかの基本的な拡張を持つHaskellは可変アリティ関数を許可していることに注意してください。しかし、それらを使用するには言語の十分な理解が必要で、vanilla Haskell 98はおそらくそれらを全くサポートしていないため、固定アリティ関数は標準ライブラリに適しています)。
関連
-
[解決済み] clojureの "let "の例を理解しようとすること
-
[解決済み】ClojureでWebアプリケーションを作るには?[クローズド]
-
[解決済み] REPLでclojureファイルを再読み込みする方法
-
[解決済み] useとrequireの違い
-
[解決済み] 実社会で活躍するLisp【クローズド
-
[解決済み] Lispに関するPaul Grahamの指摘を説明してください [closed].
-
[解決済み] clojureプロトコルの簡単な説明
-
[解決済み] ClojureでStringを数値に変換するにはどうしたらいいですか?
-
[解決済み] Clojure、Scheme/Racket、Common Lispの違いは何ですか?
-
[解決済み] Clojureのdoseqとforの違いについて
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] clojureの "let "の例を理解しようとすること
-
[解決済み】ClojureでWebアプリケーションを作るには?[クローズド]
-
[解決済み] REPLでclojureファイルを再読み込みする方法
-
[解決済み] useとrequireの違い
-
[解決済み] 実社会で活躍するLisp【クローズド
-
[解決済み] Lispに関するPaul Grahamの指摘を説明してください [closed].
-
[解決済み] clojureプロトコルの簡単な説明
-
[解決済み] ClojureでStringを数値に変換するにはどうしたらいいですか?
-
[解決済み] Clojure CoreやContribでZip関数に相当するものはありますか?
-
[解決済み] Clojure: リデュース vs. アプライ