molily: "5 Strengths of PHP"

Beitrag lesen

Hallo,

gesamt = produkte.map( getPreis ).reduce( sum );

In prozeduraler Schreibweise sähe das so aus:

gesamt = reduce( map( produkte, getPreis ), sum );

Für alle nicht Hardcore-Funktionale-Programmierung-Gurus, ist die erste Variante denke ich einfacherer zu lesen.

Man sollte noch einmal prozedural und funktional unterscheiden. Das obige Beispiel ist eher funktional, da Werte und Funktionen im Vordergrund stehen. Funktionen bilden Werte auf andere Werte ab und geben diese i.d.R. ohne Nebeneffekte zurück. Das kann soweit gehen, dass Datenstrukturen unveränderbar sind und jede Operation einen neuen Wert erzeugt.

Funktionale Programmierung ist in vielen multiparadigmatischen Sprachen möglich, darunter auch JavaScript. Lodash hatte ich als Beispiel schon genannt. Verwirrend ist das höchstens bei dynamisch typisierten Sprachen, weil nicht klar ist, für welche Typen Funktionen definiert sind und was die Typen der Rückgabewerte sind. Dass map eine Liste mit n Elementen auf eine Liste mit n Elementen abbildet, muss man in der objektorientierten wie bei der funktionalen Schreibweise wissen.

Jedenfalls ist die PHP-Standard-Library nicht funktional, sondern größtenteils prozedural, weil sie die Eingabewerte oft »destruktiv« ändert. Und die eingebauten PHP-Funktionen sind keine First-Class-Objects. Im »Userspace« gibt es immerhin mittlerweile Closures. Siehe auch functional-php.

Mathias

0 51

"5 Strengths of PHP"

tami
  • zur info
  1. 0
    hotti
    1. 0
      M.
      1. 0
        hotti
        1. 0
          tami
        2. 0
          M.
        3. 0
          Sven Rautenberg
          1. 0
            hotti
            1. 0
              M.
              1. 0
                hotti
                1. 0
                  M.
                  1. 0
                    Whouzuo
                  2. 0
                    hotti
                    1. 0
                      M.
            2. 0
              Der Martin
              1. 0
                M.
            3. 0

              Unser Wiki als Online-Fassung

              1UnitedPower
              • selfhtml-wiki
              1. 0

                Unser Wiki als Offline-Fassung

                Matthias Apsel
  2. 2
    1UnitedPower
    1. 3
      Klawischnigg
    2. 0
      tami
      1. 1
        molily
        1. 0
          tami
          1. 0
            1UnitedPower
            1. 0

              mathematische Menge vs. Datenstruktur Menge

              Matthias Apsel
              1. 0

                physikalische Menge vs. mathematische Menge

                1UnitedPower
                1. 0
                  Matthias Apsel
            2. 0
              tami
              1. 0
                Whouzuo
                1. 0
                  tami
                  1. 0
                    Whouzuo
              2. 0
                1UnitedPower
            3. 0
              molily
            4. 0
              Sven Rautenberg
              1. 0
                Whouzuo
                1. 1
                  Sven Rautenberg
                  1. 0
                    Whouzuo
              2. 0
                1UnitedPower
                1. 0
                  Der Martin
                  1. 0
                    1UnitedPower
                    1. 0
                      Der Martin
                2. 0

                  Ein Wort für funktionale Programmierung

                  1UnitedPower
                  1. 0

                    Ein Wort für funktionale Programmierung - Ramda und Currying

                    tami
                    1. 0

                      Ein Wort für funktionale Programmierung - Ramda is curried

                      tami
      2. 0
        Sven Rautenberg
        1. 0

          was bringt Hack mit Collections und Closures?

          tami
          1. 0
            tami Linksetzer
            1. 0

              Hack-like Collections in anderen Frameworks?

              tami
          2. 0
            Sven Rautenberg
            1. 0

              Beispiel für Closures in PHP (was mit privaten Vars nicht geht)

              tami
    3. 0
      Texter mit x