Для чего используется SML? [закрытый]

В простом JavaScript нет метода с именем empty(). Если вы хотите очистить элемент, есть несколько способов сделать это. Одним из наиболее простых подходов было бы просто присвоить внутренний HTML-код элемента пустой строке, например:

document.querySelector("div").innerHTML = "";
<p>The following div is now empty</p>
<div>ABC</div>
[1111 ]

Однако вы можете создать функцию многократного использования empty(), которая будет принимать элемент и очищать его содержимое следующим образом:

/* JavaScript */

function empty(x) { x.innerHTML = "" }

//You can now empty as many elements as you want using the reusable empty() function created above

var a = document.getElementById("aaa");
var b = document.getElementById("bbb");
var c = document.getElementById("ccc");

empty(a);
empty(b);
empty(c);
<!-- HTML -->

<p>All three divs below are now empty:</p>

<div id="aaa">ABC</div>
<div id="bbb"><p>XYZ</p></div>
<div id="ccc"><div>123</div></div>
[118 ]

17
задан false 29 November 2011 в 19:34
поделиться

6 ответов

ML прямо не сопоставим с Прологом. Пролог - это язык программирования декларативной логики, который в основном является средством доказательства теорем, использующим предложения Хорна. Одной из приятных характеристик (не чистого Пролога) является то, что он позволит вам серьезно изменить программу во время компиляции или выполнения. Например, в большинстве современных реализаций Пролога вы можете напрямую писать грамматики, используя формализм DCG (грамматика определенного условия). Правила грамматики с использованием оператора «->» переписываются в предложения Prolog с использованием термина «расширение». Например :

a(N) --> b, c(N).

Будет переписано в:

a(N,P0,P2) :- b(P0,P1), c(N,P1,P2).

Использование переменных положения обеспечит смежность дочерей с правой стороны стрелки. Так как Prolog попытается доказать, что глава предложения доказывает свои дочери (путем обратного отслеживания), у вас в основном есть нисходящий анализатор слева-справа без какой-либо дополнительной работы. Другим примером модификации программы является утверждение или сокращение (динамических) фактов или предложений, которые можно использовать для изменения поведения программы во время выполнения.

ML, с другой стороны, является нечистым функциональным языком. Связь между Прологом и ML состоит в том, что некоторые доказатели теорем написаны на ML. Я бы сказал, что ML гораздо более универсален, но для своих ниш Пролог очень удобен. И то, и другое очень полезно для изучения, даже просто для расширения вашего кругозора.

6
ответ дан 30 November 2019 в 11:37
поделиться

SML используется разработчиками компилятора. И Пролог и SML используются в программах автоматического доказательства теоремы.

2
ответ дан 30 November 2019 в 11:37
поделиться

Я только лично использовал его в университете для курса теории чисел. Я должен сказать, что действительно любил использовать его. Это могло обработать огромные числа, который был хорош при контакте с криптографией.

Если имеет значение, что я использовал Москву ML http://www.itu.dk/people/sestoft/mosml.html

1
ответ дан 30 November 2019 в 11:37
поделиться

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

1
ответ дан 30 November 2019 в 11:37
поделиться

Не SML, но тесно связанный, является OCAML, который использовался для многих вещей:

http://caml.inria.fr/about/successes.en.html

Мне скорее нравится "Более быстрое преобразование Фурье на Западе", где ML используется для генерации оптимизированного C...

1
ответ дан 30 November 2019 в 11:37
поделиться

At work, we use SML in actual real-life software products which we ship to paying customers. We use MLton to compile our SML code to native code running on Windows, Linux, Solaris, AIX, and HP-UX. It works well, and we're happy with our choice.

I don't see SML as particularly suited to any clear niche. Indeed, SML is a very well-rounded general-purpose programming language. Prolog is well established in the logic programming/artifical intelligence/rule based system solving niche(s), but it's used for a lot of things besides these traditional domains.

For anyone who is considering using SML for a software project in the "real world", here are some of the advantages and disadvantages we've noticed so far:

  • SML is a very nice general programming language, especially the module system rocks
  • MLton optimizes so well that you can use abstractions freely without losing performance
  • Our old code is written in plain C. We can replace that piece by piece with SML, linking both C and SML code to the same executbles.
  • SML / NJ предоставляет репл для быстрой разработки
  • Переносим на все наши платформы

Недостатки:

  • Миниатюрная база пользователей
  • Отсутствие в области вспомогательных инструментов (IDE, документация кода, отладчики и т. д.)
  • Мне пришлось самому переносить MLton на AIX и HP-UX
25
ответ дан 30 November 2019 в 11:37
поделиться
Другие вопросы по тегам:

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