Memoize |
BasicWerk
EC Support
Technique
Facebook
|
20140818143523_ruby_and_lisp |
ruby_and_lisp
Common Lisp でやってたことを Ruby ではどうやるの?と思って調べたことをメモ。
重複要素を一つにまとめる * (remove-duplicates '(1 2 2 3 3)) (1 2 3) * (remove-duplicates '("a" "b" "b" "c" "c") :test #'string=) ("a" "b" "c") > [1, 2, 2, 3, 3].uniq => [1, 2, 3] > %w[a b b c c].uniq => ["a", "b", "c"]
全て T(true) か。 * (every #'stringp '("foo" "bar" 1)) NIL > ["foo", "bar", 1].all? {|x| x.is_a? String} => false
条件に該当する要素だけ抜き出す。 * (remove-if-not #'stringp '("foo" "bar" 1)) ("foo" "bar") > ["foo", "bar", 1].grep(String) => ["foo", "bar"]
畳み込み。 * (reduce #'+ '(1 2 3 4 5)) 15 * (reduce #'+ '(1 2 3 4 5) :initial-value 100) 115 > Array(1..5).inject(:+) => 15 > Array(1..5).inject(100){|sum, n| sum + n} => 115
条件に合った最初の要素を返す。 * (find-if #'numberp '("foo" "bar" 1)) 1 > ["foo", "bar", 1].find{|x| x.is_a? Numeric} => 1
ターゲットが要素としてリスト(配列)に含まれるか? * (find 10 (iota 100)) 10 > Array(1..100).include? 10 => true
|
© Shin Nakamura/BasicWerk 2014 |