>>150
>逆に、他の言語で可能だけどRubyじゃできない書き方って何かあるの?

Ruby と競合するLLで、かつ関数型というパラダイムに限定すれば、
「関数は一級市民ではない」という制限がある
これは Ruby の世界だと「メソッドがオブジェクトではない」と
言い換えることができる

具体的なコードを Python で示そう:
(注:以下は Python を例にしているが、JavaScriptでも同様なコードは書ける)
  >>> def add(x, y): return x + y  # 関数 add を定義
  ... ^D
  >>> add(1, 2)  # 関数へ実引数 (1, 2) を適用
  3
  >>> f = add  # 関数は値(=一級市民)だから、それを別の変数 f として宣言
  >>> f(1, 2)  # 変数 f へ実引数 (1, 2) を適用しても add と同じ結果になる
  3

それに対して Ruby では:
  irb(main):001:0> def add(x, y); x + y; end  # メソッド add を定義
  => :add
  irb(main):002:0> f = add # メソッドは値(=一級市民)ではないから..(略
  ArgumentError: wrong number of arguments (given 0, expected 2)
     from (irb):1:in `add'
  from (irb):2
  from /opt/local/bin/irb:11:in `<main>'