Tramplen işlevi nedir?
İş yerinde son tartışmalar sırasında, biri trambolin bir fonksiyon denir.
Wikipedia açıklamasını okudum. İşlevlerin genel bir fikir vermek için yeterlidir, ama bir şey biraz daha somut isterim.
Bir trambolin göstererek kodunu basit bir parçacık var mı?
CEVAP
Orada da LİSP anlamda 'iyi' olarak Wikipedia'da tarif: . trambolin
Bazı LİSP kullanılan uygulamalar trambolin yinelenen bir döngü. çağırır thunk-döndüren fonksiyonlar. Bir tek trambolin için yeterli olur bir kontrol transferleri express program; bir program bu kadar ifade edilir trampolined veya""; trampolined tarzı bir program trampolined dönüştürme stil tarmbolin üstünde zıplamak. Trampolined işlevleri uygulamak için kullanılabilir kuyruk özyinelemeli işlev çağrıları stack-tabanlı diller
Bizi Javascript kullanıyoruz diyelim ve geçen tarzı devam tecrübesiz Fibonacci fonksiyonu yazmak istiyorum. Bunu biz neden örneğin - JS için bağlantı Şeması için geçerli değildir, ya da her neyse kullanmak için sunucu tarafı işlevleri çağırmak için hangi CPS ile oynamak için.
Bu yüzden, ilk denemem
function fibcps(n, c) {
if (n <= 1) {
c(n);
} else {
fibcps(n-1, function(x) {
fibcps(n-2, function(y) {
c(x y)})});
}
}
Ama, n = 25
ile çalışan Firefox bir hata veriyor Çok fazla özyineleme!'. Şimdi bu tarmbolin üstünde zıplamak çözer bu sorun tam olarak (Javascript tail call optimizasyonu eksik). (Özyinelemeli) bir işlev çağrısı yapmak yerine, return
(gene bir talimat bize bu işlev çağırmak için izin, bir döngü olarak yorumlanabilir.
function fibt(n, c) {
function trampoline(x) {
while (x && x.func) {
x = x.func.apply(null, x.args);
}
}
function fibtramp(n, c) {
if (n <= 1) {
return {func: c, args: [n]};
} else {
return {func: fibtramp,
args: [n - 1,
function (x) {
return {func: fibtramp,
args: [n - 2,
function (y) {
return {func: c,
args: [x y]}}
]}}]}}}
trampoline({ func : fibtramp, args: [n, c] });
}
(Ya da ihmal) kullanmak için zaman var...
&Quot;durağan" işlevi nedir?...
web sayfalarının işlevi nedir:MVC 3 we...
Javascript kendi yürütme işlevi amacı ...
php bir işlevi varsayılan olarak dönme...