Будет функциональный язык, который делает для сообщества Java, что F# делает для сообщества.NET?

, хотя для реализации именованных параметров была бы довольно сложной задачей, остальное вполне выполнимо.

Вариант PHP> = 5.6, реализующий оператор splat:

function query($query, $params = NULL, $types = NULL)
{
    if (!$params)
    {
        return $mysqli->query($query);
    }
    $statement = $this->mysqli->prepare($select);
    $types = $types ?: str_repeat('s', count($params));
    $statement->bind_param($types, ...$params);
    $statement->execute();
    return $statement->get_result();
}

используется как это

$sql = "SELECT * FROM accounts WHERE email = ? AND id = ?";
$row = $engine->query($sql, [$_POST['mail'], 2])->fetch_assoc();

или, если вы хотите явно указать типы

$row = $engine->query($sql, [$_POST['mail'], 2], "si")->fetch_assoc();
22
задан 10 revs, 2 users 75% 13 October 2009 в 16:35
поделиться

8 ответов

Возможно Clojure. Это не со статическим контролем типов, но это имеет больше акцента на неизменность и параллелизм, чем F#. Однако как F# (и в отличие от языка Common LISP), это предназначается, чтобы быть, прежде всего, функциональным языком, который способен использовать библиотеки OO от базовой платформы.

17
ответ дан Nathan Shively-Sanders 29 November 2019 в 03:23
поделиться

Scala был бы языком.

, Хотя не строго функциональный (это - соединение функциональных и объектно-ориентированных) и это не строго для Java (существует версия.NET Scala), который был бы самым близким аналогом к F# в JVM.

44
ответ дан jop 29 November 2019 в 03:23
поделиться

Первая вещь, которая прибыла по моему мнению, была Scala, но действительно Ocaml-Java прибывает ближе, поскольку F# является вариантом Ocaml. См. это сообщение, которое сравнивает Ocaml-Java с Scala:

программисты OCaml обычно по 10x столь же продуктивны как Java или программисты на C++ для широкого спектра практических задач. Несмотря на то, чтобы быть основанным на существенно платформе ООП, F# имеет большое значение для получения производительности - повышение преимуществ OCaml (и целая семья ML). Напротив, Scala не удается получить многие преимущества включая некоторые действительно основные и, следовательно, пишущий, что корректный код является намного более трудным в Scala, чем в любом реальном ML.

, Кроме того, языковая семья ML разработана, чтобы быть сжатой, но Scala является напрасно подробным для всего от "Привет мира!" вверх. Языковая семья ML обеспечивает обширный вывод типа (OCaml больше, чем большинство), но у Scala есть только элементарный вывод для сравнения. OCaml имеет необычно выразительную систему типов, но Scala добавляет мало к ООП, которое имеет практическое значение.

20
ответ дан Mark Cidade 29 November 2019 в 03:23
поделиться

Возможно ни один, потому что JVM испытывает недостаток в последних вызовах и они обязаны делать почти весь функциональный код устойчивым относительно потребления стека.

самая близкая вещь к функциональным реализациям языка на JVM Clojure, Scala и проект OCaml-Java. Хотя существуют обходные решения из-за отсутствия последних вызовов (например, trampolining), ни одна из этих реализаций языка не делает это, потому что обходные решения представляют еще более серьезные проблемы, например, выполнение нанесения вреда и полностью запутывание отладки.

Sun говорил о последних вызовах в течение многих лет и, позже, указал, что они намереваются реализовать их неизбежно. Как только это сделано, я уверен, что мы будем видеть намного больше разнообразия языка на JVM и, в частности, некоторое производственное качество функциональные реализации языка. До тех пор я расцениваю все эти языки как игрушки.

С наилучшими пожеланиями, Jon Harrop.

2
ответ дан Jon Harrop 29 November 2019 в 03:23
поделиться

На данный момент я сказал бы Scala. Но для будущего, я взглянул бы на Крепость. Первая реализация спецификации была выпущена 1 апреля 2008. И не, который не является шуткой. Ключевые функции:

  • Со статическим контролем типов, но большой вывод типа для предотвращения помехи
  • Unicode и 2-й рендеринг математических функций
  • Разработанный для параллельного выполнения (для каждого принимает значение по умолчанию к нему)
  • Мощная поддержка пользовательских библиотек (Влияние Guy Steele)
  • перегрузка Оператора, включая оператор
сопоставления [еще 118] информация в веб-сайт Сообщества Крепости Проекта и страница .

Wikipedia Fortress

3
ответ дан Roel Spilker 29 November 2019 в 03:23
поделиться

@Marc Gravell - функциональные языки все больше используются в кишках финансовых систем корпоративного класса. Мы используем многих функциональных (чистый или "получистый") в банке, на который я работаю...

1
ответ дан 29 November 2019 в 03:23
поделиться

На самом деле я мог бы быть неправым, но я не ожидаю, что F# будет столь же основным как другие языки.NET; полезный в нескольких кругах (академический, компиляторы, несколько других сценариев) - однако, не забывают, что C# предлагает использование FP - и это становится лучше каждый раз: C# 1.2 имеет делегатов; C# 2.0 имеет анонимные методы и получения/закрытия; C# 3.0 имеет лямбды для простоты и Выражение для абстракции. Анонимные типы (C# 3.0) доля [приблизительно 110] подобие с кортежами (с точки зрения удобства), но очевидно совсем другие звери, так определенно не сопоставимое сравнение.

, Возможно, не совсем столь же оптимизированный как F#, но для большинства ежедневных примеров использования FP, более, чем достаточных.

также довольно ясно, что лучше поддерживают для неизменности (специально для поточной обработки), находится очень на умах команды языка C# для будущего рассмотрения.

Мои деньги находятся на улучшении C# в FP и быть предложением FP.NET в большинстве ежедневных целей. Конечно, будет некоторое использование F# - но (чисто субъективный) я просто не вижу там быть огромной миграцией.

0
ответ дан 2 revs 29 November 2019 в 03:23
поделиться

There's a good list of programming languages for JVM, including functional programming paradigm and other paradigm languages on:

  • en.wikipedia.org/wiki/List_of_JVM_languages

My first pick is Scala (multi-paradigm; OO & FP), I spent a 5+ months studing Scala in 2009, and created a quick reference sheet: bchiprog.blogspot.com/2009/05/scala-cheat-sheet.html

I noticed there are other programming paradigms that are interesting, other focuses on parallel processing such as X10, Fortress, and Chapel. X10 is implemented on top of Scala - http://www.scala-lang.org/sites/default/files/odersky/scalaliftoff2009.pdf

It's really based on what problem you need to solve then pick the language that can best solve it. I think it's developers' wish that there's one language that can solve any type of problem easily and doing it simply.

2
ответ дан 29 November 2019 в 03:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: