есть ли в ML ML? - PullRequest
       107

есть ли в ML ML?

3 голосов
/ 10 июня 2010

есть ли в ML функция eval?

Ответы [ 3 ]

1 голос
/ 10 июня 2010

ML - это на самом деле просто диалект, но ни одна из использованных мной реализаций ML (OCaml, F #), насколько я знаю, не имеет оценки.Это имеет смысл, поскольку ML использует строгую типизацию (типы известны во время компиляции).Eval нарушит эту гарантию.

Однако я нашел реализацию eval в OCaml, которая, очевидно, использует код верхнего уровня:

http://thelackthereof.org/OCaml_Eval

0 голосов
/ 08 февраля 2016

Да, по крайней мере, SML / NJ и Poly / ML могут сделать это: код компилируется во время выполнения и добавляется в среду.

Для Poly / ML здесь работает пример: ML REPL

Poly / ML может делать больше подобных вещей, например, управление средой ML под управлением программы. Он также поддерживает отладку на уровне источника с произвольной оценкой в ​​точках останова.

0 голосов
/ 17 марта 2012

В F # может быть какой-то тип eval, но код для оценки должен быть заключен в кавычки.

#r"FSharp.PowerPack.dll"
#r"FSharp.PowerPack.Linq.dll"
(* load the PowerPack *)
open Microsoft.FSharp.Quotations
open Microsoft.FSharp.QuotationEvaluation
let x = <@@ 8*11 @@>
x.EvalUntyped() // = 88

Подробнее о кавычках: http://msdn.microsoft.com/en-us/library/dd233212.aspx

...