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氏も認めるように)おワットる訳ですが...