Interested Article - MLton

MLton (???????????? « ???????? » ) — ?????????????????? ???????????????-?????????????? ?????????? ????? ???????????????? Standard ML (SML). ??? ? ??????????? ????????? ?????????? Standard ML , ??????? ?? ????? Standard ML (?? ??????????? ??????? -???????, ?????????? ?? ?? ) ? ???????????????? ? ????????? ????????? ?????? ??? ????????? ? ????? BSD .

??????????????

???????????? ????? ??????? ?????????????????? ???????? ?? Standard ML : ?? ?????? ?????????? ?? ???????? ???? ????????????? ??????? ?? ?? / C++ ; ?? ????? ???????, ?? ???? ???????????????? ??????????? ?? ?????? ??????????? ??????? ?????? ?????????? ?????????, ???????? ???????????? ??. ????????? ??????????????? ?????????? ????? ??????????? ???????. ?????????????????? ? MLton ?????????????? ???? ??? ??????????? ????????????? ?????????? ?????????? SML ( ???????????????? ???????????? , ??????? ??????? ??????? , ????????? ), ??? ????????? ???????????? ???? ??? ??? ???????? ???????????????? , ??? ? ? , ?? ?????? ?? ???????????? ?????? ?????? ????? ??????????? ? ??????????????. ??????? ???????? ???? ? ????????? ? ??????? ???????????? SML ?? ?????? ?????? ?????????? ?? ?????????? ??? ?? ?????????? ???????? .

?????????????? ????? ??????? ?????????????, ? ??? ????? ????????? ?????? ? ????????????? ?????????????? ?????. ?? ????? ??????? ????? ????? ????? ?????? ?????? ?????? ?? ???????????? ??????? ? ??????? ?????????? ?? Standard ML . ?????????? ?????? ????????????? ??????????? ????? ? ???????????? ???????? ?????????? . ??????? ?????? ?????????? ?? ???????????, ??????? ?????? ?? ????????? ??????????????, ? ????????, ?????????????? ??? ??????????? ???????? ? ????? ???????????.

????? ?????? ? ??????? , ?????????????? ?????? ???????????? ?????????????? ? ?????? ?? (?????? ?? ???????? ???????? ); ? ????? ????????? NLFFI ( No-Longer-Foreign Function Interface ???. ????????? ? ??????-?????-??-?????????? ???????? ), ??????????? ?????????? ???????????? ????? ?? ????? ? ?????? ?? SML ? ???????????? ?????? ?????? ??????? ?? ? ?????????? ?? SML .

???????????? ????????? ???????? ???????? ( x86 , IA-64 , AMD64 , SPARC , ARM , PowerPC /PowerPC64, DEC Alpha , HPPA , S390 ) ? ????????????? ???????????? ??????, ? ??? ????? ????????? Unix-like -?????? (Debian, Fedora, *BSD). ??? Windows ??????? Cygwin ??? MinGW (?? ????????? ?? 2014 ???), ?????? ???? ?????? ? ????? ?????????????. ????? ?????????????? ???-???? ? ?? , C-- , LLVM ; ????? ???? ? ????? ??????? ???-??? ? ????-??? , ?? ??? ????????? ??????????, ??? ??? ?? ?? ??????? ????????????.

??????????

????????????? ? ???????????? ???????? MLton ???????????? ?? ????:

?????? ? ???????????, ??????????? ? MLton, ?????????? ?????????? ?? ????????????? . ??????? ??????????? ?????? ? ?????????? ????????? ?????? ???????? ????????? ??????????? ??????????????? ??? AST , ?????????? ????? ??????? ?????????? ? ?????? ????? , ????? ???? ???????????? ? ?????????????? ???????????. ? MLton ?? ??????? ?????? ????????? ???????? ???. ?????? ??????????? ??????????????? ? ?????????????? , ? ?????????? ???? ??? ?????????????? ?? ????????????? ????? ?? ??????????? ??????????, ?? ????????? ? SML, ???????? ????? , ?? ? ?????????? ??????? ??????? ??????? . ????? ??????? ?????????????????? ? ??? ?? ????????????? ????? ??????? ???????, ????????? ?????? ?? ??????????? ???????? ?????? ( SSA ). ? ???? ????? ?? ?????????? ??????? ???? ??????????? ????? ???????????? ??????????? (?????? ????????? ???????? ?? ??????? ????????, ??????????????? ???????? , ???????? ???????? ???? , ????? ????????????? ? ??????), ? ????? ??????? ????????????? ????????? . ????? ??????? ???? ??????? ? ??? ????????????? ???????????, ? ??? ??? ?????????????:

  • ????????? ??????????? ?????? ?????????????????? ?? ????????????? ?????????? ?????????? ML, ??? ????????? ???????????? ???? ?? ?????? ????.
  • ?????????? ?????? ?????? ?????????? ?????????? ?? ?????? ?????????? ???????????, ??? ?????? ?????? ????????????, ? ????????? — ??????? ????? ? ??????????.

????? ?? MLton ?????????? ?????? ????????????? ?????? , ? ??? ????? ?????????? ???????????? ???? ?????????????????? (? ???????, ????????, ?? ??????????? TILT , ?? ?????????????? ????????????? ?? ?????? ????????? ????), ? ????????? ???????? ????????.

??????????

MLton ?????????? ??? ????????????? ?????????:

  • ????? ????????? ??????????? ????????? , ? ??? ?????:
    • MLRISC — ?????????? ?? SML ???????????????? ????????? ??? ?????????? ?????????????? ???-????? ???????????? ??????????????? ?????? ??? ?????? ?????????? ?????????. ????????? ??????????????? ???????????????? ???-????, ???????? ????????? ????????????? ?????????? ???? ?????????? ???????????.
    • ?????????? ??????????? .
    • ?????? Unsafe ???????????? ???????????, ? ??? ????? ????????? ????????? (? ???????? ?????????? ??? ).
  • «??????» ?????? , ??????????????? ????????????-???????????, ?? ?????????????????????? ????????? ? ??????? ???????????? ???????.
  • ???? ????????????? ????? Concurrent ML (CML). MLton ????????????? ??????? ???????????????? CML, ? ???????? ??????????? ????????? ????????? ? SML/NJ, ?? ?????? ??????????? ?????????? ??????????? «??????» ??????; ??????, ?? ????????? ??????-?????????? ??????? ??? ???????? ??????????? ? ?????????? ??????????? ???????????????? ??????? IO ? OS .
  • «World save and restore» — ??????????? ????? ????? ????????? ????????? ? ???? ? ??????????? ???????????????.
  • MLBasis — ??????????? ??????? ?????????? ???????? SML , ????? ????????, ??? CM ?? ??????? . ?????????????? ?????????????? ???????????????? ?? ??????? .cm ? ?????? .mlb .

? ?????? ?????? .

?????????? ????????????????? ?????????? ?????? MLton:

???????, ?????????, ????????????

? ?????? 1997 ???? ?????? ???? ( ????. Stephen Weeks ) ?????????? ??????????????? ??? , ????? ?????????? ??????? ???????? ?? 2 ?? 6 ??? . ? ??????? ???? ?? ???? ???? ?????? ?????????? ??????????????? ???????????, ??????? ?? ??? ?????? ????????? smlc . ? ??????? ??? ?????????? ??????????????. ?? ????????? ??????? ???? smlc ???? ????????? ??????????? ???????????? ? ??? ???????????? ? MLton, ?????? ????? ???????? ????????? ? ????? 1999 ???? . ? 2005 ???? MLton ????????? ???????????? ?????????????? ?????????????????? ???????? .

? ?????? ?????? ?????????? ?????? ? ?????? ?? ?????????????????? ?? ???? ?????????? ??????????? ????????.

???????????? MLton ??????? ????????? ???????? ?????? ??????????? ??? « ???????? », ?? ???????? ?? ?????? « ???????? » ( ????. mill ) — ????????, ??????? ???????????? « ????????????? ???????? ?? ML », ??? ???????? ?????????? ??????????? ??????? ? ????????.

???????? MLton ????????? ?????? ????????:

  • ?????? ???? ( ????. Stephen Weeks )
  • ????? ?????? ( ????. Henry Cejtin )
  • ????? ???? ( ????. Matthew Fluet )
  • ????? ??????????? ( ????. Suresh Jagannathan )

??????? ????? ????? ?????? ?????? ?????? ???? .

? 2013 ???? ?????? MLton ?????? ? ????????? Google Summer of Code .

???????????? MLton ???????? ????????? ??????????? ?????? ?? successor ML . ? 2014 ???? ???? ?? ??? ???? ????????? ?????? «NSF CISE Research Infrastructure (CRI)» « ?? ???????????????? MLton ??? ???????????? ????? ?????? ????????? ».

??????? ? ????????? ? ??????????????

MLton ???????????? ?????????????? ???????? ?? ?????? ?? / C++ , ??? ??????????? ?? ??????????????? ????? ???????????????? .

?????????? ???????? ???????? ?? ?????????? ??????????? ??????? ? ????????? ?????? ??????????????:

  • ???????????? ??????? ??????? ? ?????? ??? ??????. ????????, ?????????? ???????????? ???? (????? 140 ????? ????? ?? SML) ?? ?????????? ?????? 1.6 ??? ???????? ?? 5 ?? 10 ????? ? ??????? ????? 500 ?? RAM .
  • ?????????? ??????????? ?????????? ??????????.
  • ?????????? ?????? REPL , ???????????? ??? ??????????? ?????????? Standard ML .

????????? ? OCaml

? OCaml, ? MLton ????????? ????????? ???????? ?????????????? , ??????? ????????? ??????????? ? ??????????? ?? ?? ? C++, ??????????? ?? ????????? ???????? (???? ?????? ?? ?????????) ? ?????????????? ???????? ?????????????. ??? ?????? ?????????? ?????? ?? ?? ???????? :

  • MLton ?? ?????? ?????? ?? ????? ??????? ????? ??? Windows . OCaml ???????? ??? ? ????????? ?????????, ?????????? ??? Windows, ?? ???????? ???????? ?????? ??? Unix-like , ??? ??? ?????????? ????? fork () .
  • OCaml ???????????? ? IDE ??????????? ?????? ???????? (????????, ???????? ????????? ???????????? ??? ?? ?????? ??????, ?? ? ?????). MLton ?? ????? ??????????? ????? ? ???????? ?? ????????? ??????, ?? ????????? ?????????????? ?????????????? ???????????? ????????????? (????????, ????????????? ???? ?? ??????? ? ?? ????????). MLton ?? ???????????? ????? REPL , ?? ????????? ???????? ? ????????? ???? ????????? ?????? ????? .
  • OCaml ????? ??? ??????????? ? ???????????? ???-????? ??? ??????? — ? ???????? ??? ? ? ????-??? — ?? ??????? ?????? ??????????? ??????, ? ?????? ????? ??????. MLton ????? ????????? ???-?????, ? ??? ??????????? ?? ?????? ?????? ?? ??? ??????????? ????? ????????.
  • OCaml ?? ?????????? ????? ??????? ? ?? ????????? ?????????????? . ??? ?????????, ?? ????????? ??????????? ??? ??????????????? ??? ????????, ?????????? ? ???????????? ????? ? ??? ????????????? ???????????? . ??? ????????, ?????????? ???????????? ?????????????? ?????? , ?? ????? ?????? ???????????? ?????? ????????. ??????? ?????????? ???? ????? ???????? ????? ????? ??????? ?????? ?? ?????????????. ? ??????? ?? ????, MLton ?? ???? ??????????? ?? ????????? ?????????? ?????? ????????? ??????????? ??????????? ???, ??????????? ?????? ????????????? ?????? ???????????. ??? OCaml ?????????? ????????? ??????????????? .
  • OCaml ????? ?????? ?????????? ????????????? ??????????? ? ??????????? ????? ? ??????? ????????????? ?????: ??????? ??? ???????????? ??? ?????????? ????? ? ??????????, ??? ??? ???????????? ???????? ????? ?? 32-????????? ????????? ?????????? 31 ????? , ???? ??????????? ????????. MLton ?????????? ???????? ????????????? ???? ??????????? ? ?????????? ??????????? ????? ? ???????? ?????? ?? ??????????? ?????????? .
  • ? MLton ?????? ? ???????????, ??? ? OCaml, ??? ? ???????????? ??????? ??????? ? ?????????? ???????. ??? ?????????? ???? ?? OCaml ? ????? ?? ?? ????????? ??????? ?????? ??????? ? ???? ?????? ??????-??????? ? ?????????? ? ???? ???????, ? ?? ??????????????? ? ?????????? . MLton ????????????? ????????? ?????????? .

????? ????? ??????? ???????? ????????? ???????? ????? ?????????????, ????? ????????? ? ?????????? ????? ?????? ???????:

  • ??? ????? ? ????? ??????? ?????????? Lex / Yacc (??????????????, ocamllex/ocamlyacc ? MLLex/MLYacc). ? ?????????? OCaml ????? ??????????????? ?????? , ??????????? ???????? ????????? ????? ? ????? ??????? ????????? ? ?????????? ??????? ????????? ??? ?????????? ???????????? ?????? . MLton ?? ??????????????? ?????? ????????????.
  • ?????????? OCaml ????? ???????: ??? OCaml ????????? ???????? ????? ????????? ? ?????????? OCaml ??????????? ??????, ??? ?????????? Standard ML . ??? Standard ML ????????? ??????????? ??????, ?? ?????????? ? MLton ????????? ??? ????? ?????????? ???????????? ?????????????? ? ???????????? ?? ??.
  • ? OCaml ????????? ???????? «???? ?????? ? ????? ?????», ? ?????? ?? ???? ???????????? ???????????? ??? ????????? . Standard ML ?? ??????? ?????? ???????, ? MLton ????????????? ??????????? ??????? ?????????? ???????? SML — MLBasis .

??. ?????

??????????

  1. ? . ???? ?????????: 13 ?????? 2014. 13 ?????? 2014 ????.
  2. ? .
  3. ? . ???? ?????????: 13 ?????? 2014. 13 ?????? 2014 ????.
  4. . ???? ?????????: 10 ??????? 2014. 14 ??????? 2014 ????.
  5. .
  6. . ???? ?????????: 21 ?????? 2014. 29 ?????? 2014 ????.
  7. . ???? ?????????: 13 ?????? 2014. 13 ?????? 2014 ????.
  8. . ???? ?????????: 13 ?????? 2014. 13 ?????? 2014 ????.
  9. 9 ??? 2008 ????.
  10. . ???? ?????????: 18 ?????? 2014. 23 ???????? 2015 ????.
  11. . ???? ?????????: 13 ?????? 2014. 2 ?????? 2015 ????.
  12. . ???? ?????????: 13 ?????? 2014. 13 ?????? 2014 ????.
  13. . ???? ?????????: 13 ?????? 2014. 13 ?????? 2014 ????.
  14. . ???? ?????????: 13 ?????? 2014. 13 ?????? 2014 ????.
  15. . ???? ?????????: 14 ???????? 2016. 23 ???? 2016 ????.
  16. . ???? ?????????: 14 ???????? 2016. 23 ???????? 2016 ????.
  17. .
  18. . ???? ?????????: 13 ?????? 2014. 13 ?????? 2014 ????.
  19. The Breakfast Post. (????.) . ???? ?????????: 16 ???????? 2016. 21 ???????? 2016 ????.
  20. . ???? ?????????: 13 ?????? 2014. 13 ?????? 2014 ????.
  21. . Calcul Statique des Applications de Modules Parametres. Julien Signoles. JFLA 2003. (2010). ???? ?????????: 10 ??????? 2014. ???????????? ?? 4 ?????? 2015 ????. — Defunctorizer for OCaml
  22. .

??????

  • (????.) .
  • Stephen Weeks. ( (????.) ). — 2006. 29 ???? 2007 ????.
  • Jens Olsson, Andreas Rossberg. (????.) (2009).
  • Matthias Blume. ( (????.) ). — Elsevier Science B. V., 2001. 4 ?????? 2005 ????.
  • Matthew Fluet, Riccardo Pucella. ( (????.) ). — IFIP International Conference on Theoretical Computer Science, 2002.
  • Zhong Shao, Andrew W. Appel. ( (????.) ). — Lisp and Functional Programming, 2006.
  • Chailloux, Manoury, Pagano. Developing Applications With Objective Caml (?????.) . — 2007. — ?. 349-370, ????? 11. ?????????????? ? ?????? ??.
???????? —

Same as MLton