Rubyだと簡単なんだよね

ちなみに id:flalin:20100910:1284077635 の例をRubyで書くなら

def findExe(exeName, pathEnvVarVal)
  pathEnvVarVal.split(File::PATH_SEPARATOR).each {|dir|
    return dir if File.exist?("#{dir}/#{exeName}")
  }
  nil
end
  • Rubyでは全ての変数がポインタ型で nil が許されるのでMaybe的なものは要らない(これが困るときもあるが)
  • Rubyでは(と言うかHaskell以外のほとんどの言語がそうだが)副作用のある手続きを自由な場所で使える(これが困るときもあるが)
  • あと「Ruby高階関数」であるブロック付きメソッドは,ブロック内でreturnできるという絶妙な仕様が...

まぁRubyはローカル変数のスコープが(Matz氏も認めるように)おワットる訳ですが...