LoginSignup
4
1

More than 1 year has passed since last update.

「あの言語のあれ」まとめ

Last updated at Posted at 2022-05-29

「あの言語のあれ」まとめ

なにこれ

最近あっちこっちの言語を行き来しているので、
「あの言語のあれ、この言語でどう書くんだ?」
をまとめたものが欲しくなったので備忘録的にまとめていきたいと思います。
徐々に追記していく感じで書いていきます。
分類は特に深く考えてつくってないです。
載せてほしいものがあればコメントまたは
編集リクエストいただければ気づいたときに対応します。

コレクション操作系

map

コレクションの要素に対して関数を適用した新しいコレクションを返す。

Common Lisp
(defvar xs (list 1 2 3))
(mapcar (lambda (x) (* x 2)) xs) ; (2 4 6)
JavaScript
let xs = [1,2,3];
xs.map(x => x*2); // [2, 4, 6]
C#
List<int> xs = new List<int>() { 1, 2, 3 };
xs.Select(x => x*2); // [2, 4, 6]

filter

コレクションの要素のうち、条件を満たす要素のみからなる新しいコレクションを返す。

Common Lisp
(defvar xs (list 1 2 3 4))
(remove-if-not (lambda (x) (equal (mod x 2) 0)) xs) ; (2 4)
JavaScript
let xs = [1,2,3,4];
xs.filter(x => x%2===0); // [2, 4]
C#
List<int> xs = new List<int>() { 1, 2, 3, 4 };
xs.Where(x => x%2==0) // [2, 4]

zip

各コレクションの同一インデックスの要素を一つの新しいコレクションにまとめる。

JavaScript
// すべてのコレクションの要素数が同じことが前提
let a = [1,2,3];
let b = ["a","b","c"];
const zip = (...arrays) => arrays[0].map((_,i) => arrays.map((x,_) => x[i]));
zip(a,b); // [[1,"a"],[2,"b"],[3,"c"]]
Common Lisp
(defvar a '(1 2 3))
(defvar b '(a b c))
(mapcar #'list a b) ; ((1 A) (2 B) (3 C))
C#
int[] a = { 1, 2, 3 };
string[] b = { "a", "b", "c" };
a.Zip(b, (xa, xb) => new dynamic[] { xa, xb }); // [[1,a],[2,b],[3,c]]

コレクション処理系

reduce

畳み込み。
※良い説明が思いつかないので要追記

Common Lisp
(defvar xs (list 1 2 3 4))
(reduce (lambda (x m) (+ x m)) xs :initial-value 0) ; 10
JavaScript
let xs = [1,2,3,4];
xs.reduce((x,m) => x+m, 0) // 10
C#
List<int> xs = new List<int>() { 1, 2, 3, 4 };
xs.Aggregate(0, (m,x) => x+m) // 10

コレクション生成系

range (aka. iota)

整数値aから整数値bまでの連番のコレクションを生成して返す。

Common Lisp
(ql:quickload :alexandria)
(alexandria:iota 4 :start 2) ; (2 3 4 5)

※参考: JavaScriptでrange関数作ってみた

JavaScript
let range = (a,b) => [...Array(b-a+1)].map((_,i) => a+i);
range(2,5); // [2,3,4,5]

※参考: JavaScriptでrange関数作ってみた

C#
int a = 2;
int b = 5;
Enumerable.Range(a, b-a+1).Select(x => x); // [2,3,4,5]

※参考: 色々な言語でrange関数的な処理の書き方[Python,C++,D,C#,JS,VB,HSP,Lisp,Scheme,Clojure]

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1