【问题标题】:list numbers 1 to n in function - SML在函数中列出数字 1 到 n - SML
【发布时间】:2013-10-26 23:04:31
【问题描述】:

我需要在 sml 中创建一个函数,该函数接受一个数字并返回其下方所有素数的列表。我可以这样做,但我不知道如何创建一个列表,所以我可以用来查看 1 是否是素数,然后是 2,然后是 3,然后是 4,然后是 5,依此类推。

基本上我需要一种在 SML 函数内部生成列表的方法,并且该列表的数字从 2 到 n。

【问题讨论】:

    标签: sml ml


    【解决方案1】:

    List.tabulate 函数将为您填充一个列表。这是一个例子,给你数字[2..n]

    List.tabulate(n-1, fn x => x+2);
    

    【讨论】:

    • 是返回一个列表还是将其存储在某个地方,我是函数式编程的新手。 (它显然返回)
    【解决方案2】:

    我发现我们不能为此使用外部库,所以我实际上能够提出自己的解决方案。它执行从start 到最多但不包括ending 的数字

    fun createList(start:int, ending:int) = if(start = ending) then
                           []
                        else
                           start::createList(start + 1, ending);
    

    【讨论】:

    • 很久以前,但认为添加为评论会很好,您甚至不必告诉它 start 和 end 是整数。这就是类型推断的美妙之处。 ML 会看到您正在添加 1(一个 int)来启动,并且由于 + 的类型是 int * int -> int,因此可以推断 start 是一个 int。然后你在开始和结束之间执行相等检查,所以结束也必须是一个 int !不是很甜蜜吗?
    • if (start = ending) then [ending]... 为我工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-10
    • 2021-12-09
    • 1970-01-01
    • 2015-08-16
    • 2016-08-30
    • 1970-01-01
    相关资源
    最近更新 更多