- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我开始学习 Standard ML,现在我尝试使用 New Jersey 编译器的 Standard ML。
现在我可以使用交互式循环,但是如何将源文件编译为独立的可执行文件?
例如,在 C 中,你可以只写$ gcc hello_world.c -o helloworld
然后运行 helloworld 二进制文件。
我阅读了 SML NJ Compilation Manager 的文档,但它没有任何明确的示例。
另外,是否有另一个 SML 编译器(允许独立的二进制创建)可用?
最佳答案
两者 MosML和 MLton还可以创建独立的二进制文件。 MosML 通过 mosmlc 命令和 MLton 通过 mlton 命令。
请注意,MLton 没有交互式循环,而是一个整体程序优化编译器。这基本上意味着编译需要相当长的时间,但反过来它会生成 incredibly fast SML 程序。
对于 SML/NJ,您可以使用 CM.mk_standalone
功能,但在 CM 用户手册第 45 页中不建议这样做。相反,他们建议您使用 ml-build 命令。这将生成 SML/NJ 堆图像。堆镜像必须使用@SMLload 参数运行,或者您可以使用 heap2exec程序,前提是您拥有受支持的系统。如果您不这样做,那么我建议您改用 Mlton。
以下可用于生成有效的 SML/NJ 堆图像:
测试.cm:
Group is
test.sml
$/basis.cm
structure Test =
struct
fun main (prog_name, args) =
let
val _ = print ("Program name: " ^ prog_name ^ "\n")
val _ = print "Arguments:\n"
val _ = map (fn s => print ("\t" ^ s ^ "\n")) args
in
1
end
end
ml-build test.cm Test.main test-image
然后通过
sml @SMLload test-image.XXXXX arg1 arg2 "this is one argument"
运行它其中 XXXXX 是您的架构。
fun main () = print "this is the main function\n"
val foo = 4
val _ = print ((Int.toString 4) ^ "\n")
val _ = main ()
mlton foo.sml
编译它这将产生一个名为“foo”的可执行文件。当你运行它时,它会产生这样的结果:
./foo
4
this is the main function
mlton projectr.mlb
编译它。
关于SML-NJ,如何编译独立的可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5053149/
在 OCaml 中,函数应用程序的评估顺序是未指定的(又名非确定性的)。 在标准机器学习中,它也是非确定性的还是确定性的?您能否提供对规范部分进行澄清的引用? 编辑:对于那些稍后来的人,我还了解到,与
我是 SML 的新手,正在使用 SMLNJ 方言。 出于某种目的,我一直在尝试将 3 类型转换为 3.0(int 到 real)。 找不到出路。我怎样才能做到这一点?如何在类型之间进行转换? 最佳答案
SML中有标准的排序函数吗?互联网上的文档太少了,我找不到任何文档。 最佳答案 SML 基础库中没有定义排序功能,但大多数实现都扩展了基础库并添加了额外的功能。 因此,MosML 具有 ArraySo
1 fun max(a,b,c) = 2 if a > b a
SML长度函数: fun length(L) = if (L=nil) then 0 else 1+length(tl(L)); 例如: length [1,2,3] = 3; len
这里的第一个问题只是想作为我做了几个查询的序言,虽然我发现了多个措辞相似的问题,但我发现没有一个问题在问或回答我的问题(据我所知)。 我正在 SML 中进行类作业,因此我将省略一些细节,以便我可以自己
我正在使用带有 SML 模式的 Emacs。有时我需要清理 SML 缓冲区。我怎样才能做到这一点。 最佳答案 新泽西标准 ML 是一种函数式编程语言,它是 ML 的变体。通常它在带有插件的 EMACS
我相信我对在 SML 中捕获异常有一些基本的误解。 我写了下面的代码: fun my_g acc p = let val r = my_g acc in ca
我目前在 SML 代码中有很多打印语句,而且我正在遍历一个非常大的树,所以打印所有打印语句需要一段时间,但现在我不想看到任何打印语句和只是想看到它尽可能快地运行。但我不想评论所有的打印,因为我以后需要
我正在使用 SML/NJ,我需要使用某个文件中的一组函数 f1.sml在另一个文件中 f2.sml . 但是,我没有运行 f2.sml直接,相反,我从其他地方导入它。 如果我使用 use f2.sml
fun p( x::xl ) = if x::xl = [] then [] else [0]; 它收到警告:匹配非详尽无遗。 x::xl => ... 我想做的是: p( [] ) = []
我有这个声明: let val x = let val x = 5 in(fn y =>(y,x+y)) end in let val y=3 and z=
有没有办法使用 SML 打印完整列表? 通常在 SML 中发生的情况是,当我有太多元素时,它会打印由“,”分隔的前几个元素,然后用 ... 省略列表的其余部分,但我想看看完整列表。有什么办法吗? va
我正在尝试读取我的输入文件的名称 argv[1] 。这是我到目前为止所做的: val args = CommandLine.arguments() ; val (x::y) = args ; val
我如何转换 array输入 list输入 sml。我已经搜索了列表和数组结构函数,但没有找到执行此操作的函数(尽管有一个数组函数列表)。 列表结构说明: http://sml-family.org/B
我目前正在为 SML 类(class)的作业评分。我编写了一些测试用例来自动检查学生作业中函数的正确性,我希望能够导入他们的代码,然后针对该代码运行测试用例。我正在想象类似于 python 导入语义的
如何将命令行参数传递给 SML 脚本?我知道有一个 CommandLine.arguments()正确类型的函数( unit -> string list ),但像这样调用解释器: $ sml scr
假设我在 sml 中有一个非常大的列表,然后 sml 显示一些条目,然后开始显示 # 字符。 有人能告诉我如何查看整个列表吗? 最佳答案 假设这是 SML/NJ,您可以使用 printLength ,
我有以下公式 fun foo 0 = [0] | foo num = let val l = (num mod 2)::foo(num div 2) in rev l
我有一个关于我的作业的问题,问题是 有使用数据类型: datatype 'a llist = LList of 'a llist list| Elem of 'a; 嵌套列表由多态类型的元素或嵌套列表
我是一名优秀的程序员,十分优秀!