abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
včera 09:44 | Upozornění

Byly zveřejněny videozáznamy přednášek z konference LinuxDays 2019, která proběhla 5. a 6. října v Praze. Odkazy na videa společně s prezentacemi naleznete v programu, případně můžete jít rovnou na stránku video. Záznamy pořizovalo Audiovizuální centrum SiliconHill.

Petr Krčmář | Komentářů: 18
17.10. 18:55 | Nová verze

Bylo vydáno OpenBSD 6.6. Opět bez oficiální písně. Z novinek lze zmínit například sysupgrade(8).

Ladislav Hagara | Komentářů: 5
17.10. 08:36 | Nová verze

Vyšla nová verze monitorovacího řešení Centreon 19.10.0. Novinek je spousta (realtime API, podpora JIRA, vylepšený systém notifikací...), ale těmi nejdůležitějšími je pro mnohé uživatele podpora nové verze rrdtool 1.7.x a php 7.2. Systém tak půjde bez problémů provozovat na jiných distribucích než CentOS 7. Kompletní přehled novinek v seznamu změn. Předpřipravená appliance i samotné části jsou k dispozici na oficiálních stránkách.

Max | Komentářů: 0
17.10. 01:00 | Komunita

Dnes vyjde Ubuntu 19.10 s kódovým názvem Eoan Ermine. Přehled novinek v poznámkách k vydání. Ubuntu 20.04 LTS bude Focal Fossa.

Ladislav Hagara | Komentářů: 14
16.10. 22:11 | Zajímavý projekt

Padesátiny Unixu lze oslavit také hrou The Unix Game aneb na unixové roury pomocí Scratche.

Ladislav Hagara | Komentářů: 2
16.10. 21:44 | Komunita

Vývojáři svobodného 3D softwaru Blender oznámili, že nejnovějším firemním sponzorem Blenderu je společnost Adidas. Jedná se o úroveň Corporate Silver, tj. 12 tisíc eur ročně.

Ladislav Hagara | Komentářů: 24
16.10. 18:22 | Komunita

V září proběhla každoroční konference Akademy komunity KDE. Nyní jsou záznamy přednášek dostupné online. Témata se dotýkají aplikací a knihoven KDE, jejich adaptaci pro různá speciální použití (vestavěná zařízení či rozšířená realita) i obecně vývoje a distribuce softwaru.

Fluttershy, yay! | Komentářů: 0
16.10. 09:11 | Zajímavý článek

Mozilla.cz informuje o vylepšování vlastních about: stránek Firefoxu, konkrétně o odstraňování volání funkce eval() z těchto stránek. Tyto stránky mají přístup k interním součástem Firefoxu, ale protože jsou napsané v HTML a JavaScriptu, mohou být cílem podobných útoků jako webové stránky zobrazované v prohlížeči (např. vložení cizího kódu nebo obsahu), jen s potenciálně závažnějším dopadem. Pokud by se někomu skutečně povedlo kód do

… více »
Ladislav Hagara | Komentářů: 3
16.10. 08:55 | Zajímavý projekt

Uživatel GitHubu joeycastillo představil The Open Book Project, jehož cílem je vytvořit open-source čtečku elektronických knih. Projekt se zatím nachází v rané fázi vývoje, už nyní ale obsahuje použitelný návrh hardware prototypu „Feather Wing“, jehož cílem má být ověření konceptu na 4,2palcovém displeji. Tento koncept je postaven na kitu Adafruit Feather M4 Express, který ovládá hlavní desku s displeji a tlačítky. Po úspěšném ověření

… více »
Bystroushaak | Komentářů: 41
16.10. 05:00 | Nová verze

Byla vydána verze 5.0.0 svobodného systému pro detekci a prevenci průniků a monitorování bezpečnosti počítačových sítí Suricata (Wikipedie). Přehled novinek v oficiálním oznámení a v aktualizované dokumentaci.

Ladislav Hagara | Komentářů: 0
Kdy jste naposledy viděli počítač s připojeným běžícím CRT monitorem?
 (20%)
 (4%)
 (11%)
 (39%)
 (24%)
 (2%)
Celkem 423 hlasů
 Komentářů: 22, poslední 23.9. 08:36
Rozcestník

www.AutoDoc.Cz

Dotaz: Zjednodusenie lisp-like interpretra v JS

30.11.2016 15:48 gsnak | skóre: 21 | blog: gsnak
Zjednodusenie lisp-like interpretra v JS
Přečteno: 225×
Mam nasledovny lisp-like interpreter v JS:
var fun = {
    "+": function (a) { return a.reduce(function (a, b) { return a + b; }); },
    "-": function (a) { return a.reduce(function (a, b) { return a - b; }); },
    "*": function (a) { return a.reduce(function (a, b) { return a * b; }); },
    "/": function (a) { return a.reduce(function (a, b) { return a / b; }); }
};

function lisp(aCode) {
    var i, fn, arg;
    if (Array.isArray(aCode)) {
        fn = aCode[0];
        arg = aCode.slice(1);
        for (i = 0; i < arg.length; i++) {
            if (Array.isArray(arg[i])) {
                arg[i] = lisp(arg[i]);
            }
        }
        return fun[fn](arg);
    }
    return aCode;
}

console.log(lisp(["/", 22, ["-", 10, ["+", 1, 1, 1]]]));
console.log(22 / (10 - (1 + 1 + 1)));
Ale ta hlavna funkcia lisp() sa mi zda neelegantna, nevedeli by ste niekto napisat ju elegantnejsie? Myslim ze to ide zapisat este kratsie.
DOGE: DE7q1kxqvoFek7UGWBWBt47QWJTRBqVNLL

Řešení dotazu:


Odpovědi

wamba avatar 30.11.2016 19:27 wamba | skóre: 38 | blog: wamba
Rozbalit Rozbalit vše Re: Zjednodusenie lisp-like interpretra v JS
Podle mě je tam podruhý ten if zbytečně. A možná bych raději testoval, kdy to není Array, abych měl zanořený jen ten return aCode a ne celý ten blok.
This would have been so hard to fix when you don't know that there is in fact an easy fix.
1.12.2016 09:09 gsnak | skóre: 21 | blog: gsnak
Rozbalit Rozbalit vše Re: Zjednodusenie lisp-like interpretra v JS
Jo, mas pravdu, ten druhy if tam bol zbytocne.
DOGE: DE7q1kxqvoFek7UGWBWBt47QWJTRBqVNLL
1.12.2016 09:12 gsnak | skóre: 21 | blog: gsnak
Rozbalit Rozbalit vše Re: Zjednodusenie lisp-like interpretra v JS
Aj to znizenie odsadenia pomohlo:
function lisp(aCode) {
    var i, fn, arg;
    if (!Array.isArray(aCode)) {
       return aCode;
    }
    fn = aCode[0];
    arg = aCode.slice(1);
    for (i = 0; i < arg.length; i++) {
        arg[i] = lisp(arg[i]);
    }
    return fun[fn](arg);
}
DOGE: DE7q1kxqvoFek7UGWBWBt47QWJTRBqVNLL

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.