Pull to refresh

Comments 8

UFO just landed and posted this here
… которая, в свою очередь, принимает другую функцию и возвращает ещё одну.
Всё новое — это хорошо забытое старое. В 2006 году Джоэл Спольский написал статью «Может ли ваш язык программирования делать это?», и как раз на примере JavaScript показал элементы функционального программирования в этом языке.

И чтобы уже 2 раза не ходить, цитата:
Среди языков, поддерживающих функциональное программирование, можно отметить JavaScript, Haskell, Clojure, Scala и Erlang.

Я добавлю Delphi — он также уже умеет кое-что из функциональщины. Более, того, в версии 10.3, которая ожидается уже в этом месяце, появится декларирование переменных по месту использования и вывод типов. Можно будет писать что-то вроде:

var Proc := (function: TProc begin
    var n := 0;
    Exit(procedure begin
      Write(n);
      Inc(n);
    end);
  end)();
  Proc;

«Дo чегo ж на нашегo Буншу JavaScript пoхoж!» :)
Тогда и я пополню список Rust-ом, он может в ФВП и вообще в функцинальщину:
fn is_odd(n: u32) -> bool { n % 2 == 1 }

fn main() {
  println!("Найдём сумму всех нечётных квадратов чисел до 1000");
  let upper = 1000;
  let sum_of_squared_odd_numbers: u32 =
    (0..).map(|n| n * n)                          // все квадраты натуральных чисел
      .take_while(|&n_squared| n_squared < upper) // до верхнего предела
      .filter(|&n_squared| is_odd(n_squared))     // те что нечётные
      .fold(0, |acc, n_squared| acc + n_squared); // сложим их
  println!("Результат: {}", sum_of_squared_odd_numbers); // 5456
}

Это так из-за того, что в JavaScript, как и в других языках, поддерживающих функциональное программирование, функции являются объектами.

А без объектов функционального программирования не бывает?
Sign up to leave a comment.