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
- phaul blogja
- A hozzászóláshoz be kell jelentkezni
- 738 megtekintés
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
- A hozzászóláshoz be kell jelentkezni