Vlákno názorů k článku Mercury: Abstrakce nad algoritmy od martin - Kdyz uz tu je zminena ukazka v perlu,...

  • Článek je starý, nové názory již nelze přidávat.
  • 11. 3. 2004 8:45

    martin (neregistrovaný)

    Kdyz uz tu je zminena ukazka v perlu, doplnim, ze do pythonu se taky dostaly kousky funkcionalniho programovani, soucet ctvercu by se dal udelat takto

    import operator
    seznam = [1,2,3]
    ctverce = map(lambda x: x*x, seznam)
    soucet_ctvercu = reduce(operator.add, ctverce)

    v modulu operator jsou definovany funkcionalni verze beznych operatoru, lambda by pozornym ctenarum clanku mela byt jasna, map take, reduce je obdoba foldu.

    Python nedovoluje v lambda funkci prirazeni.
    pokus
    map(lambda x: s += x**2, [1,2,3])
    vyvola vyjimku
    SyntaxError: invalid syntax
    a tento pokus
    map(lambda x: s = s + x**2, [1,2,3])
    vyvola primo
    SyntaxError: lambda cannot contain assignment

    K map a reduce patri jeste filter, co dela je asi jasne:
    filter(lambda x: x>3, [1,3,4,56,5,4,3,34])
    vrati seznam
    [4, 56, 5, 4, 34]

  • 11. 3. 2004 10:47

    deda.jabko (neregistrovaný)

    lambda vyrazy budou asi hodne popularni (taky se neni duvod divit) - nove by je mel mit i C# 2.0 (jako anonymni delegaty)