Ruby

Ratalaltam a rubyra es tetszik,

meg kb. 5 eve foglalkoztam a Mathematicaval, es az ott latott funckionalis elemek nagyon jok voltak. Csak egy pelda, hogy mire gondolok:


Clear[fact]
fact[n_Integer?NonNegative]:=Apply[Times[Range[n]]

szoval ez volt a faktorialis implementacioja. Miert tetszett? 1. tomor, 2. azt fejezi ki, hogy mi a faktorialis, nem pedig azt, hogy hogyan kell csinalni. Ez pedig sokkal logikusabb.

A haskell-t probaltam mint Mathematica potlo, de nem igazan jott be. Aztan ott van a lisp, az egy klassz nyelv de valamiert a funkcionalis elemeit sose hasznaltam.

Ruby-val meg csak most ismerkedek, uh ha nem a legjobb a kodom lehet kritizalni..
Mindenesetre eddig bejon.
Ime:


class Array
   # Mathematica like `apply' for arrays and 2 operand
   # operators, like + * etc.
   def apply
      x = at(0)
      (1..length-1).each do |i|
         x = yield(x, at(i))
      end
      return x
   end
end

def fact(n)
   Array(1..n).apply do |a, b|
      a*b
   end
end

(1..5).each do |x|
   puts fact(x)
end

Hozzászólások

Lehet ezt rövidebben is :-)


class Fixnum
    def factorial
        (2..self).inject(1) do |res,x|
            res*x
        end
    end
end


(1..15).each do |x|
    puts x.factorial
end